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
- 게임 수학
- Specular
- C언어
- ASW(Application SpaceWarp)
- Three(Two) Tone Shading
- 작업 집합
- URP로 변경
- Cell Look
- AppSW
- Cell Shader
- VR
- working set
- Toon Shader
- 개인 바이트
- 메모리 누수
- 프로그래밍 기초
- Virtual Byte
- 3d
- 벡터
- Cartoon Rendering
- 가상 바이트
- Private Bytes
- URP
- Windows Build
- Rim Light
- ColorGradingLutPass
- OculusMotionVectorPass
Archives
- Today
- Total
WinCNT
Illusion 본문
아지랑이(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;
float2 uv2 = uv + offset.xy * fStrength;
c0 = tex2D( TextureSampler, uv2 ).r; // 흑백으로 전환
// 원본 텍스처
float4 c1 = tex2D( TextureSampler, uv );
return c0;
// return c0.r; // 흑백으로 출력
// return lerp(c0, c1, fAlpha); // 원본과 노이즈 값을 알파값으로 보간하는 경우
}
텍스처 좌표 교란(Texture Perturbation)
개발자가 의도적으로 좌표를 어긋나게(교란)하는 기법
Post Processing은 아니지만 다양한 효과를 얻을 수 있다
이 기법을 활용하면 텍스처만으로 흐르는 물의 느낌을 줄 수 있다
sampler2D diffuseMap;
sampler2D bumpMap;
float weight;
float fTime0_X;
float flowspeed;
struct PS_INPUT
{
float2 uv : TEXCOORD0;
};
float4 ps_main( PS_INPUT Input ) : COLOR0
{
float2 uv = float2( Input.uv.x + fTime0_X * flowspeed, Input.uv.y );
float2 n = tex2D(bumpMap, uv).xy;
return tex2D(diffuseMap, Input.uv.xy + weight * n);
}
SSS
'게임 프로그래밍(학습 내용 정리) > 게임 수학' 카테고리의 다른 글
SSAO(Screen Space Ambient Occlusion) (0) | 2022.07.12 |
---|---|
Texture Technique (0) | 2022.07.12 |
Edge Detect Filter (0) | 2022.06.28 |
Light Shaft (0) | 2022.06.28 |
Vignetting (0) | 2022.06.28 |