Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 가상 바이트
- URP
- OculusMotionVectorPass
- AppSW
- working set
- Cartoon Rendering
- Cell Look
- 메모리 누수
- Rim Light
- 게임 수학
- ColorGradingLutPass
- Three(Two) Tone Shading
- 벡터
- 프로그래밍 기초
- 작업 집합
- Cell Shader
- Virtual Byte
- Windows Build
- 개인 바이트
- URP로 변경
- 3d
- Private Bytes
- VR
- ASW(Application SpaceWarp)
- C언어
- Toon Shader
- Specular
Archives
- Today
- Total
WinCNT
Light Shaft 본문
현실에서 구름이나 나뭇잎 등의 사이를 뚫고 나오는 빛줄기를 표현한 기법이다
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
float2 DeltaTexCoord = ( texCoord.xy - vLightShaftPos.xy );
float Len = length( DeltaTexCoord );
DeltaTexCoord *= 1.0 / NUM_LIGHTSHAFT_SAMPLES * vLightShaftValue.x;
float3 Color = tex2D( SamplerSrc0, texCoord );
float IlluminationDecay = 1.0;
for( int i = 0; i < NUM_LIGHTSHAFT_SAMPLES ; ++i )
{
texCoord -= DeltaTexCoord;
float3 Sample = tex2D( SamplerSrc0, texCoord );
Sample *= IlluminationDecay * vLightShaftValue.z;
Color += Sample;
IlluminationDecay *= vLightShaftValue.y;
}
float4 c0 = float4( Color * vLightShaftValue.w, 1.0 );
return c0;
}
SSS
'게임 프로그래밍(학습 내용 정리) > 게임 수학' 카테고리의 다른 글
Illusion (0) | 2022.06.28 |
---|---|
Edge Detect Filter (0) | 2022.06.28 |
Vignetting (0) | 2022.06.28 |
DOF(Depth Of Field) (0) | 2022.06.21 |
Posterize (0) | 2022.06.21 |