일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- VR
- 가상 바이트
- Windows Build
- 게임 수학
- working set
- Rim Light
- Cartoon Rendering
- 작업 집합
- Toon Shader
- ASW(Application SpaceWarp)
- Three(Two) Tone Shading
- 3d
- Cell Shader
- OculusMotionVectorPass
- URP로 변경
- Specular
- 벡터
- ColorGradingLutPass
- AppSW
- Cell Look
- Private Bytes
- URP
- Virtual Byte
- C언어
- 메모리 누수
- 프로그래밍 기초
- 개인 바이트
- Today
- Total
목록게임 프로그래밍(학습 내용 정리)/게임 수학 (33)
WinCNT
HDR로 만들어진 Data를 출력 가능한 형태인 LDR(혹은 SDR)로 바꾸는 연산 float를 byte로 바꾸는 연산이기 때문에 다양한 연산자(연산 방법)가 존재한다 LDR에선 당연히 사용 안 함 전체적으로 어두운 쪽에 값을 많이 표현하도록 되어 있는 그래프(로그 함수와 비슷)가 특징이다 이것은 웨버의 법칙을 반영했기 때문이다 웨버의 법칙은 사람의 눈이 어두운 부분에서는 밝기가 조금만 변해도 그 차이를 감지하는 반면 밝은 부분에서는 더 큰 변화가 있어도 그 차이를 잘 감지할 수 없는 특징을 말한다 다음은 다양한 톤 매핑 기법에 대한 설명이다 (출처는 글 마지막에 기재) Reinhard float4 Reinhard( float2 texCoord : TEXCOORD0 ) : COLOR { float3 te..
Color Grading(색 보정), 다른 말로는 Color Correction 같은 렌더링 화면이라도 연산 부하가 거의 없이 조절할 수 있다 https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/PostProcessEffects/ColorGrading/ Color Grading and Filmic Tonemapper Tonemapping and color correction effects for adjusting scene colors. docs.unrealengine.com Color Grading의 원리 룩 업 테이블(Look Up Table) Color Grading Look Up Table 데이터는 아트팀이 툴을 이용해서 만든다 FEffe..
Ambient Occlusion 환경 차폐라는 뜻 Light Map과 비슷한 개념으로 그림자 맵을 미리 만들어서 적용한 것 정적인 물체에는 효과적이지만 동적인 물체에 적용은 불가능했다 SSAO(Screen Space Ambient Occlusion) Screen Space는 실제 화면에 그려진 것들을 의미한다 SSAO는 물체들의 경계면에서 발생하는 차폐도(어두운 부분)를 Deferred Rendering을 통해 Screen Space에서 실시간으로 연산하는 기법 SSAO의 원리 결국은 차폐도를 확률론에 기반해서 계산하는 기법 주의 사항 밝은 곳을 더 밝게 하는 것이 아니라 어두운 곳을 더욱 어둡게 한다는 인식으로 사용하자 Direct Light가 닿는 부분은 건드리지 말자 거리가 멀수록 SSAO 강도를 ..
폭발이나 용암(Lava)을 표현하기 위한 기법 텍스처는 1차원, 2차원 2종류가 있다 1차원 텍스처는 LUT(Look Up Table) 용도로 많이 사용된다 2차원 텍스처는 3차원 모델링에 일반적으로 사용된다 Cube 맵은 6장의 2차원 텍스처로 주변 환경을 표현한다 Volume 텍스처 UV에 W좌표까지 포함한 3차원 텍스처 UV가 W만큼 나란히 있는 이미지 물론 용량은 커진다! * 0.82 - 0.12는 FlameMap(1D)에서 검정색과 흰색을 적게 나오게 하기 위한 매직 넘버 SSS
아지랑이(Haze)처럼 빛이 굴절되는 현상을 표현하는 기법 캐릭터의 사망 연출 등에도 자주 사용된다 Illusion의 구현 원리 Illusion Code sampler2D TextureSampler; sampler2D Noise; float fStrength = 0.1;// 노이즈의 강도 float fTime0_X; float2 uvDir = float2( 1, 1 );// 노이즈 맵을 읽을 방향 float4 ps_main( float2 uv : TEXCOORD0 ) : COLOR { float4 c0; float2 st = uv + uvDir * fTime0_X;// 시간에 따라서 노이즈 맵의 읽을 방향을 이동시킨다 float2 offset = tex2D( Noise, st ).xy * 2 - 1; f..
외곽선을 그리는 기법 캐릭터를 그릴 때 가장 많이 사용한다 장점 : 1픽셀의 외곽선을 정확하게 따준다 두께는 블러를 적용한 것 블러의 강도를 조절하면 깜박거리는 느낌을 줄 수 있다 Edge Detect Filter의 예시 값이 급격하게 변하는 곳이 윤곽선으로 만드는 기법 값이 급격하게 변하는 곳은 필터로 찾는다 Sobel Filter 가장 유명한 필터 주변 픽셀에 필터 값을 곱한 뒤 더한다 Laplacian Filter 또 다른 필터 적용 예시 법선 벡터(노멀 벡터)에 필터링을 적용하는 이유 노멀 벡터는 경계 부분에서 노멀 값이 급격하게 바뀐다 따라서 노멀 벡터에 필터를 적용하면 깔끔하게 딸 수 있다 반대로 일반적인 버퍼에 바로 필터링을 적용하면 카메라의 각도에 따라서 외곽선이 안 보이는 경우가 생기기도..
현실에서 구름이나 나뭇잎 등의 사이를 뚫고 나오는 빛줄기를 표현한 기법이다 Radial Blur와 구현 방식은 비슷하다 Light가 그려진 Buffer에 Radial Blur를 적용하여 BackBuffer와 합성(Add)해서 구현한다 float2 vLightShaftPos : POSTEFFECT_SEMANTIC_LIGHTSHAFT_POS; float4 vLightShaftValue : POSTEFFECT_SEMANTIC_LIGHTSHAFT_VALUE; // .x=Density, .y=Decay, .z=Weight, .w=Exposure float4 psLightShaft( float2 texCoord : TEXCOORD0 ) : COLOR0 { #define NUM_LIGHTSHAFT_SAMPLES 64..
Vignetting 현상은 빛을 모으는 렌즈의 특성상 초점에서 멀어질수록 광량이 줄어들어서 주변부가 어두워 지는 현상을 말한다 (대부분의 렌즈에서 발생하며 저렴한 렌즈에서 많이 발생함) Vignetting 기법은 이미지를 필름 카메라의 느낌을 들게 만드는 기법이다 다양한 구현 방법이 존재한다 Vignetting Code sampler2D Texture0; float fAlpha; float4 ps_main( float2 texCoord : TEXCOORD0 ) : COLOR { float2 uv = texCoord - 0.5f; float dist = length(uv); float radius = 0.8; float softness = 0.4; float vignette = smoothstep(radi..
DOF - Dgree Of Freedom과는 다른 것 Dgree Of Freedom는 자유도라고 애니메이션에서 사용되는 용도 DOF - Depth Of Field(피사계 심도)는 사진에서 나온 용어이며 카메라에서 초점이 맞지 않은 물체는 흐려지는 현상을 뜻한다 (참고로 사람 눈에는 없는 현상) TV나 영화에서 자주 나오는 연출이며 게임에서도 컷씬 등의 스토리 연출에서 자주 사용된다 깊이 버퍼로부터 얻은 값을 기준으로 초점과 픽셀의 거리를 구해서 먼 거리일수록 Blur 가중치 값을 증가시킨다 SSS