Upload
noerror
View
988
Download
5
Embed Size (px)
Citation preview
투명 재질
• 빛이 표면에서 전부 반사하거나 통과하지 않고 일
부 내부에서 산란하여 통과하는 재질
http://www.cs.virginia.edu/~rw2p/cs647/project.htm
BTDF
• 일반적인 BRDF에는 미포함
BSSRDF (BRDF 내하 산란 항을 추가한 것으로
투과와는 성격이 약간 다름)
• 투과 속성을 가진 BTDF항 추가
• 투과도가 필요
재질 내부 특성이 균일하다고
가정하면 깊이가 필요
Wikipedia:Bidirectional_scattering_distribution_function
실시간 투명 렌더링
• 깊이 값을 근사하여 투명도 결정
– 깊이 텍스처를 이용
– 텍스처 스페이스
• SH를 이용한 근사법 제안
깊이 텍스처를 이용
• Translucent Shadow Map
• 1. 깊이 맵을 이용
– 라이트의 시점에서 깊이 렌더링 (그림자 맵과 동일)
– 임의의 점의 라이트 거리와 TSM에 저장된 거리 차이
• 2. 두 채널을 이용
– R에는 거리, G는 Far에서의 거리를 Write
– 블랜드는 Min
– 결과적으로는 가까운 거리는 R, 먼 거리는 1-G
– 두 값 차이를 이용하여 깊이 계산
http://www.gamerendering.com/2009/09/25/render-thickness/
깊이 텍스처를 이용
• 단점
– 렌더링 패스 증가로 인한 성능 이슈
– 해상도로 인한 실루엣 알리아싱 문제
– Convex한 물체에만 유효
DICE(GDC2011)
• GDC2011:Approximating Translucency
for a Fast, Cheap and Convincing Subsurface
Scattering Look
• 쉽고 빠른 근사가 목표
DICE(GDC2011)
• 표면의 투과도를 미리 Bake
– 텍스처 스페이스에서 계산 (픽셀 별로)
– 표면의 노멀 반대 방향으로
Ambient Occlusion 계산하는 방식으로 계산
– 값을 인버스 하면 투명도의 근사값을 구함
DICE(GDC2011)
• 재질의 특성에 맞도록 투과를 계산
• 표면의 투과도를 곱해서 최종 투과 라이트 값을 구함
• Convex한 객체에 최적화됨
Spherical Harmonics
• 구면 조화함수
• 컨셉은 푸리에 변환이나 라플라스 변환 같은 값의 도메인
을 이동하는 계열과 유사하게 생각하면 됨
• 계수가 많을 수록 입력 값과 유사해짐
낮은 주파수 영역대가 근사값에 큰 역할을 함
• 압축하는 의도라고 생각해도 크게 틀리지 않음
Spherical Harmonics
• 구면 조화함수 그래픽스 응용
• 입력 구형 이미지 => SH 계수
• SH계수 => 구형이미지
• 계수가 많다면 입력 이미지를 복원하겠지만, 전역광의 경우 의도적으
로 블러링하여 사용하기 때문에 그냥 적은 개수의 계수를 사용하면
블러링한 결과와 동일 GOOD
• 연산이 가볍고 적은 개수의 계수로도 훌륭한 품질의 결과물이 나와서
실시간 렌더링에서 많이 사용
http://www.cs.berkeley.edu/~ravir/
SH를 이용한 투명 재질
• 컨셉 : SH를 이용하여 방향성 있는 투명도를 구하자
• 절차
– 깊이 계산이 필요한 위치에서 방향 별 깊이 값을 연산(불투
명도)
– SH계수를 이용하여 압축 (손실은 있으나 내부 산란 특성을
고려하면-투명도의 저주파성- 오히려 블러링 생략의 이득)
– 렌더링시 노멀을 이용해 방향성 있는 투명도 얻기
SH를 이용한 투명 재질
• http://www.youtube.com/watch?v=_UMpeSEAwik
SH를 이용한 투명 재질
• 버텍스 단위 계산
– 퍼 픽셀로 계산하기 위해선 float 텍스처 여러
장이 필요함
– 투명 재질의 내부 산란 특성 때문에 높은 해상
도의 데이터는 불필요
• 버텍스의 스트림에 버텍스의 SH계수를 전
달 (3개의 texture coordinate가 필요)
SH를 이용한 투명 재질
• 버텍스에서 전 방향의 두께를 구함
– 빛의 입사에 따라 깊이 값이 달라지므로
– 임의의 개수의 ray를 발사해서 구하기
• 필요하다면 다층의 길이를 합산 가능
– 단순 합산이 물리적으로는 맞지 않을 수도 있
으나 convex하지 않은 객체도 근사 가능
SH를 이용한 투명 재질
• 대 부분 노멀 방향에서 좌우로 퍼지는 모양
을 하고 있음
• 탄젠트 스페이스로 계산
– 값의 엔트로피 감소
– SH계수로 변환 시 좀 더 손실이 적음
SH를 이용한 투명 재질
• 계산한 깊이 값으로 SH계수 구하기
• 정확한 깊이 값을 구하는 게 목표는 아니므
로 적당히 노멀라이징
– 실제로는 깊이 보다는 투명도가 필요한 것
장점
• 빛의 방향에 따른 투명도가 적용된다
장점
• 스키닝 객체에도 적용이 가능하다
– 빛의 방향을 탄젠트 스페이스 좌표로 옮기면 끝
• 애니메이션 객체에도 적용 가능하다
– 어클루더가 움직이기 때문에 물리적으로 올바르지 않
지만 방향성을 정상적이기 때문에 납득할 만한 품질
장점
• 버텍스 셰이더에서 간단한 SH 만으로 계산 가능
– 저사양에서도 전혀 부담 없는 연산 비용
• Convex가 아닌 객체도 쉽게 구할 수 있음
– GDC2011:Dice도 같은 조건이지만 convex 언급한 것
은 AO를 통해서 굽는 방식적인 부분 때문으로 TSM의
한계와는 다른 이슈
(현 방식의 SH 상수항만 사용하면 Dice와 동일)
• 납득할만한 퀄리티
질문/답