10_Human Skin Rendering

13
Human Skin Rendering 김성익 [email protected] 2010/08/22 KASA

Transcript of 10_Human Skin Rendering

Page 1: 10_Human Skin Rendering

Human Skin Rendering

김성익 [email protected]

2010/08/22

KASA

Page 2: 10_Human Skin Rendering

실시간 피부 렌더링

• 최근 하이엔드 게임에서 사실적인 피부 렌더링은 기본이 됨

Page 3: 10_Human Skin Rendering

피부 특징 (1)

• 피부의 구성

– 표피 epidermis

– 진피 dermis

– 피하지방층 subcutaneous fat

• 빛이 피부 안에서 산란

SubSurface Scattering (표면하산란)

반투명 물체 내부에서 일어나는 산란

• 반투명 BSSRDF 모델

• 반투명 특성으로 피부에는 빛이 드리워 졌을 때 부드럽게 스며드는

효과가 나타남

Page 4: 10_Human Skin Rendering

피부 특징 (2) - 산란

• 그림자 영역과 빛을 받는 영역 사이의 경계가 부드럽다

– 비교 피부와 불투명 재질에 드리워진 그림자

• 일반적인 소프트 셰도우 이슈와는 다른 성격

Page 5: 10_Human Skin Rendering

피부 특징 (3) - 산란

• 산란색이 약간 붉은 색의 특성을 띰

– 피부 내부 표피의 필터링 효과• 멜라닌 (갈색)

• 카로틴 (오렌지색)

• 헤모글로빈 (적색, 분홍색)

– 파장의 성분으로 보면 장파장(적색)에 좀 더 높은 반사 특성

Page 6: 10_Human Skin Rendering

피부 특징 (4) – 투과

• 피부의 두께에 따라 투과도가 다름

얇은 피부는 투과되어 보임

Page 7: 10_Human Skin Rendering

피부 렌더링 파이프라인

• 텍스처 스페이스의 피부 렌더 텍스처 렌더링

– 오리지널 피부의 텍스처

– 라이팅

– 그림자

• 피부 렌더 텍스처를 단계별로 가우시안 블러

• (텍스처에 피부의 두께 렌더링)

• 화면에 피부 텍스처를 이용하여 렌더링

Page 8: 10_Human Skin Rendering

Nvidia Human Head Demo

• (이미지 Siggraph 2010 dice문서 발췌)

• Efficient Rendering of Human Skin - Eurographics Symposium on Rendering 2007

Page 9: 10_Human Skin Rendering

파이프 라인 최적화(1)

• Fast Skin Shading - ShaderX7

• 스킨 텍스처의 레이어별 가우시안 블러 텍스처 없이 렌더링

– 한 장의 가우시안 블록 텍스처만으로 렌더링

– 블러 텍스처 없이 최종 렌더링에서 셈플링

Page 10: 10_Human Skin Rendering

파이프 라인 최적화(2)

• 12개의 샘플링만으로 블러 + 피부산란

• 레이어 별로 가우시안 텍스처 사용한 결과 값에 근사

• 퍼포먼스에 따라 샘플링한 텍스처를 사용하거나 최종 패스에 직접 샘플링

(품질 차이는 거의 없으며 퍼포먼스 이슈)

Page 11: 10_Human Skin Rendering

투과

• 두께를 이용하여 투과된 빛의 양을 계산

Page 12: 10_Human Skin Rendering

피부 두께 근사화

• 두께를 실시간으로 구하는데 어려움이 있음. 근사화하여 사용

• Translucent Shadow Map– 라이트 시점에서 Depth 렌더링

– Z 버퍼 없이 depth를 pixel op를

min 으로도 가능

– 프로젝션 위치와 깊이 버퍼를

깊이 값을 이용해서 임의의

위치에서의 두께 계산

– Convex가 아닌 경우 올바른

계산법은 아님 (그래도 비교적 무난한

결과가 나오는 것으로..)

• 두께를 SH계수로 굽는 방법

– 각 버텍스에서 전 방향의 두께를 구한 후 SH 계수로 압축하여 버텍스에 저장

– 탄젠트 스페이스로 가지고 있으면 좀 더 정확한 근사, 애니메이션에도 사용 가능

– 굉장히 저렴한 셰이더 코드 (1채널 SH디코드)

– http://www.youtube.com/watch?v=_UMpeSEAwik

– ^^

Page 13: 10_Human Skin Rendering

참고

• Uncharted 2: Character Lighting and Shading, John Hable, SIGGRAPH 2010

• Efficient Rendering of Human Skin, Eugene d'Eon, David Luebke, and Eric Enderton,

Eurographics 2007

• Fast Skin Shading, John Hable, George Borshukov, and Jim Hejl, ShaderX7

• Real-Time Realistic Skin Translucency, Jorge jimnez, David Whelan

• http://www.gamedev.net/community/forums/topic.asp?topic_id=553749