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
- C언어
- 개인 바이트
- Toon Shader
- Cell Look
- ASW(Application SpaceWarp)
- 메모리 누수
- Rim Light
- URP로 변경
- OculusMotionVectorPass
- working set
- ColorGradingLutPass
- 벡터
- Cell Shader
- Cartoon Rendering
- 3d
- 작업 집합
- Windows Build
- Virtual Byte
- Private Bytes
- Specular
- URP
- 가상 바이트
- 프로그래밍 기초
- AppSW
- Three(Two) Tone Shading
- VR
- 게임 수학
Archives
- Today
- Total
WinCNT
Bloom 본문
Bloom
빛이 Blooding하는 느낌
Blur 효과를 사용한다
Bloom을 위해서는 우선 밝은 부분을 Bloom Curve 추출해야 한다
(1.2와 같은 파마리터 수치는 알아서 설정)
//#define BLOOMCURVE_METHOD_1
//#define BLOOMCURVE_METHOD_2
#define BLOOMCURVE_METHOD_3
float GetBloomCurve( float x, float threshold )
{
float result = x;
x *= 2.0f;
#ifdef BLOOMCURVE_METHOD_1
result = x*0.05+max(0,x-threshold)*0.5; // default threshold = 1.26
#endif
#ifdef BLOOMCURVE_METHOD_2
result = x*x/3.2;
#endif
#ifdef BLOOMCURVE_METHOD_3
result = max(0,x-threshold); // default threshold = 1.0
result *= result;
#endif
return result * 0.5f;
}
그리고 Bloom Curve를 적용한 Downsample + Bloom Curve
준비해둔 작은 사이즈의 버퍼를 3~4개를 이용해서
Bloom Curve를 적용한 텍스처를 점점 Downsample한다
제일 작은 사이즈의 버퍼에 Downsampling이 끝났으면 Blur를 적용하고,
그 위 해상도의 해상도와 합친다(작은 해상도는 Linear 필터가 적용되면서 커짐)
그리고 다시 Blur를 적용하고 다시 그 위의 해상도와 합친다
위의 처리를 원본 텍스처와 합칠 때까지 계속한다
놀랍게도 연산 부하는 원본을 바로 Blur하는 것보다 줄어든다...
Specular 채널은 Bloom Curve를 통과하는(즉 무조건 Bloom이 적용하는) 채널을 나타내는 것이다
SSS
'게임 프로그래밍(학습 내용 정리) > 게임 수학' 카테고리의 다른 글
Posterize (0) | 2022.06.21 |
---|---|
Pixelate (0) | 2022.06.21 |
Motion Blur (0) | 2022.06.21 |
Radial Blur (0) | 2022.06.14 |
Blur (0) | 2022.06.14 |