난 단순하게 일정 수치 이상의 값인 픽셀만 추출해서 가우시안 필터 적용하는 식으로 구현했거든
근데 이게 강도를 어떻게 줘야하는건지 모르겠어
유니티는 블룸 강도를 높이면 진짜 빛나는것처럼 확 퍼지던데 뭘 해줘야 그런 느낌으로 바뀔까
난 단순하게 일정 수치 이상의 값인 픽셀만 추출해서 가우시안 필터 적용하는 식으로 구현했거든
근데 이게 강도를 어떻게 줘야하는건지 모르겠어
유니티는 블룸 강도를 높이면 진짜 빛나는것처럼 확 퍼지던데 뭘 해줘야 그런 느낌으로 바뀔까
블러를 더 강하게 먹여야하나
https://youtu.be/tI70-HIc5ro
요약: 블러 -> 다운스케일 ->블러 ->다운스케일 -> .... -> 업스케일 -> 업스케일 ->업스케일
그러면 그냥 기존 렌더 타겟보다 작은 resolution의 렌더 타겟에 먼저 블러 적용한다음에 그 결과물을 업스케일 시키면 비슷하면서도 더 효율 좋을 것 같긴하네.. 전에 SSAO 할 때 기존 렌더 타겟 1/2 해상도 렌더 타겟에 AO 그려낸다음에 업스케일링 해서 적용했었는데
유니티가 바보도 아니고 결과물에 차이가 있으니까 원본 해상도부터 다운스케일 업스케일 했겠지?
원본 텍스쳐에시 부터 시작해서 다운 스케일 해가면서 가우시안 블러(Horizontal, Vertical 한번씩)먹여주면서 최종적으로 N번의 다운스케일링을 거친다음에 최종 다운스케일+블러 결과물을 원본 크기 텍스쳐(블러가 적용되지 않은)까지 계속 합쳐주는거네 - dc App
결론적으로 유니티든 체르노든
http://www.iryoku.com/next-generation-post-processing-in-call-of-duty-advanced-warfare
여기서
설명하는 블룸 기법을 기반으로 하고있으니까 참고해서 쉐이더 짜면 될 듯! - dc App
나도 다운스케일 업스케일 이용해서 하고있긴 한데 유니티의 강도 슬라이더 값을 어떻게 구현해야할지 모르겠어서 질문한거였음. 암튼 레퍼런스는 모르고 있었는데 땡큐
강도는 이제 저렇게 블러 처리된 이미지의 texel 값을 scailing 해주기만 하면 되는 거 아니야? 이미 화면 전체로 퍼지는 값이 다 있으니까 위 기법 기준으로 최종적으로 원본 렌더 타겟이 blend 시킬 때 bloomTexture.Sample(uv) * intensity 만 해주어도 될 것 같은데.. 안되나? 나 같은 경우엔 Full-screen bloom 밖에 안해봐서 당장은 모르겠네
말해준게 맞는거같긴 한데 값이 크면 좀 어색해지네 좀 찾아봐야겠다
결과 값이 큰데 결과가 이상하면 (특히 값이 높아져서 특정 부분이 너무 밝아져서 디테일이 손실되버리는 경우)는 톤 맵핑이 제대로 되었는지 한번 확인해봐야 할 것 같은데
톤 매핑은 HDR을 안쓰고 있어서 안하고 있는데... 그쪽도 구현을 생각해봐야겠네
중간 단계들은 HDR 렌더 타겟 쓰고 최종적으로 톤 맵핑 해주는거 추천함.. 안그러면 후처리 해줄 때 디테일 손실도 크고, 물리 기반 렌더링 파이프라인 구현했는데 LDR 버퍼 쓰고있으면 엄청나게 제약걸릴텐데
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=eryners&logNo=110132043354