90 likes | 321 Views
Decal. 이민웅 Shader Study. Decal. Decal 이란 ? 벽에 총알 자국을 표시 할때 반복적인 기하구조에 변화는 줄때 구현 기하구조 전체를 프레임 버퍼에 랜더링 하고 그 위에 데칼을 감은 다각형들을 랜더링. 문제. Decal 에 범프맵핑을 할때 조명이 이상하게 나옴. 개선된 방법. 두 개의 전체화면 랜더링 대상 필요 1 : DiffuseRenderTarget 2 : Bump RenderTarget 첫번째는 데칼 버퍼를 준비
E N D
Decal 이민웅 Shader Study
Decal • Decal 이란? • 벽에 총알 자국을 표시 할때 • 반복적인 기하구조에 변화는 줄때 • 구현 • 기하구조 전체를 프레임 버퍼에 랜더링 하고 그 위에 데칼을 감은 다각형들을 랜더링
문제 • Decal에 범프맵핑을 할때 • 조명이 이상하게 나옴
개선된 방법 • 두 개의 전체화면 랜더링 대상 필요 • 1 : DiffuseRenderTarget • 2 : BumpRenderTarget • 첫번째는데칼 버퍼를 준비 • 두번째 그 버퍼를 이용해서 장면을 랜더링 하고 데칼과 장면을 함께 랜더링
기하구조의 깊이 값들을 전부 메인 Z버퍼에 랜더링(데칼버퍼제외) • DiffuseRenderTarget을 현재 랜더링 대상으로 설정 메인 Z버퍼는 계속 사용 검은색을 바탕색으로 사용해서 랜더링대상을 비움 • 모든 데칼 기하구조를 현재 랜더링대상에랜더링1단계에서 사용한 깊이 버퍼를 이용하여 동일한 깊이 비교 함수 사용 • BumpRenderTarget에서도 비슷한 작업 수행 데칼기하구조를 랜더링하되. 범프맵텍스쳐 출력으로 사용
현재 그리는 픽셀의 좌표 위치를 얻음 • 텍스쳐 좌표를 이용해서 DiffuseRenderTargrt에서 분산 RGB값을 읽음 • 공식을 이용해서 기하구조의 분산 색과 섞음 • 범프맵은 위와 같음 BumpRenderTarget를 사용
장점 • 보통의 범프맵 적용 데칼에 비해 이미지 화질이 좋음 • 범프맵만 담은 데칼로 벽에 갈라진 금이나 패인 흠 같은 변이 특징을 추가함으로 벽이 덜 반복적이게 할 수 있음 • 데칼의불투명도를 조절해서 기하구조가 시간에 따라 닳고 해지는 모습을 흉내낼 수 있음 • 조명이 일관적이므로, 데칼의불투명도값을 조절하는 것만으로도 풍화(침식) 범프맵을 바탕 기하구조와 완벽하게 혼합 • 인스턴신을 많이 사용하는 장면에 다향성을 더하는 용도로 사용 • 깊이버퍼를 사용하므로 평면이 아닌 데칼도 사용가능
구현하기 쉽고 일반적으로 랜더링 파이프라인을 크게 뜯어 고치지 않고도 기존 엔진과 통합할수있음 • 성능은 단일데칼일때는느릴수있지만 여러 개의 중복된 데칼을 사용한다면 조금 빠르다 • 데칼을 여러 번 겹쳐 그리면 조명과 범프맵핑을 수행하는 복잡한 쉐이더가 여러 번 수행되지만 개선된데칼은 여러 번 겹쳐도 복잡한 쉐이더는 한번만 수행
Q & A 감사합니다. Shader Study