Human Skin Rendering김성익 noerror@softnette.com2010/08/22			KASA
실시간 피부 렌더링최근 하이엔드 게임에서사실적인 피부 렌더링은 기본이 됨
피부 특징 (1)피부의 구성표피 epidermis진피 dermis피하지방층 subcutaneous fat빛이 피부 안에서 산란SubSurface Scattering (표면하산란)반투명 물체 내부에서 일어나는 산란반투명 BSSRDF 모델반투명 특성으로 피부에는 빛이 드리워 졌을 때 부드럽게 스며드는 효과가 나타남
피부 특징 (2)- 산란그림자 영역과 빛을 받는 영역 사이의 경계가 부드럽다비교 피부와 불투명 재질에 드리워진 그림자일반적인 소프트 셰도우 이슈와는 다른 성격
피부 특징 (3) - 산란산란색이 약간 붉은 색의 특성을 띰피부 내부 표피의 필터링 효과멜라닌 (갈색)카로틴 (오렌지색)헤모글로빈 (적색, 분홍색)파장의 성분으로 보면 장파장(적색)에 좀 더 높은 반사 특성
피부 특징 (4)– 투과피부의 두께에 따라 투과도가 다름얇은 피부는 투과되어 보임
피부 렌더링 파이프라인텍스처 스페이스의 피부 렌더 텍스처 렌더링오리지널 피부의 텍스처라이팅그림자피부 렌더 텍스처를 단계별로 가우시안블러(텍스처에 피부의 두께 렌더링)화면에 피부 텍스처를 이용하여 렌더링
Nvidia Human Head Demo(이미지 Siggraph 2010 dice문서발췌)Efficient Rendering of Human Skin - Eurographics Symposium on Rendering 2007
파이프 라인 최적화(1)Fast Skin Shading - ShaderX7스킨 텍스처의 레이어별가우시안블러 텍스처 없이 렌더링한 장의 가우시안 블록 텍스처만으로 렌더링블러 텍스처 없이 최종 렌더링에서셈플링
파이프 라인 최적화(2)12개의 샘플링만으로 블러+ 피부산란레이어 별로 가우시안 텍스처 사용한 결과 값에 근사퍼포먼스에 따라 샘플링한 텍스처를 사용하거나 최종 패스에 직접 샘플링(품질 차이는 거의 없으며 퍼포먼스 이슈)
투과두께를 이용하여 투과된 빛의 양을 계산
피부 두께 근사화두께를 실시간으로 구하는데어려움이 있음. 근사화하여 사용Translucent Shadow Map라이트 시점에서 Depth 렌더링Z 버퍼 없이 depth를 pixel op를min 으로도 가능프로젝션 위치와 깊이 버퍼를깊이 값을 이용해서 임의의위치에서의 두께 계산Convex가 아닌 경우 올바른계산법은 아님 (그래도 비교적 무난한결과가 나오는 것으로..)두께를 SH계수로 굽는 방법 각 버텍스에서 전 방향의 두께를 구한 후  SH 계수로 압축하여 버텍스에 저장탄젠트 스페이스로 가지고 있으면 좀 더 정확한 근사, 애니메이션에도 사용 가능굉장히 저렴한 셰이더 코드 (1채널 SH디코드)http://www.youtube.com/watch?v=_UMpeSEAwik^^
참고Uncharted 2: Character Lighting and Shading, John Hable, SIGGRAPH 2010Efficient Rendering of Human Skin, Eugene d'Eon, David Luebke, and Eric Enderton, Eurographics 2007Fast Skin Shading, John Hable, George Borshukov, and Jim Hejl, ShaderX7Real-Time Realistic Skin Translucency, Jorge jimnez, David Whelanhttp://www.gamedev.net/community/forums/topic.asp?topic_id=553749

10_Human Skin Rendering

  • 1.
    Human Skin Rendering김성익noerror@softnette.com2010/08/22 KASA
  • 2.
    실시간 피부 렌더링최근하이엔드 게임에서사실적인 피부 렌더링은 기본이 됨
  • 3.
    피부 특징 (1)피부의구성표피 epidermis진피 dermis피하지방층 subcutaneous fat빛이 피부 안에서 산란SubSurface Scattering (표면하산란)반투명 물체 내부에서 일어나는 산란반투명 BSSRDF 모델반투명 특성으로 피부에는 빛이 드리워 졌을 때 부드럽게 스며드는 효과가 나타남
  • 4.
    피부 특징 (2)-산란그림자 영역과 빛을 받는 영역 사이의 경계가 부드럽다비교 피부와 불투명 재질에 드리워진 그림자일반적인 소프트 셰도우 이슈와는 다른 성격
  • 5.
    피부 특징 (3)- 산란산란색이 약간 붉은 색의 특성을 띰피부 내부 표피의 필터링 효과멜라닌 (갈색)카로틴 (오렌지색)헤모글로빈 (적색, 분홍색)파장의 성분으로 보면 장파장(적색)에 좀 더 높은 반사 특성
  • 6.
    피부 특징 (4)–투과피부의 두께에 따라 투과도가 다름얇은 피부는 투과되어 보임
  • 7.
    피부 렌더링 파이프라인텍스처스페이스의 피부 렌더 텍스처 렌더링오리지널 피부의 텍스처라이팅그림자피부 렌더 텍스처를 단계별로 가우시안블러(텍스처에 피부의 두께 렌더링)화면에 피부 텍스처를 이용하여 렌더링
  • 8.
    Nvidia Human HeadDemo(이미지 Siggraph 2010 dice문서발췌)Efficient Rendering of Human Skin - Eurographics Symposium on Rendering 2007
  • 9.
    파이프 라인 최적화(1)FastSkin Shading - ShaderX7스킨 텍스처의 레이어별가우시안블러 텍스처 없이 렌더링한 장의 가우시안 블록 텍스처만으로 렌더링블러 텍스처 없이 최종 렌더링에서셈플링
  • 10.
    파이프 라인 최적화(2)12개의샘플링만으로 블러+ 피부산란레이어 별로 가우시안 텍스처 사용한 결과 값에 근사퍼포먼스에 따라 샘플링한 텍스처를 사용하거나 최종 패스에 직접 샘플링(품질 차이는 거의 없으며 퍼포먼스 이슈)
  • 11.
  • 12.
    피부 두께 근사화두께를실시간으로 구하는데어려움이 있음. 근사화하여 사용Translucent Shadow Map라이트 시점에서 Depth 렌더링Z 버퍼 없이 depth를 pixel op를min 으로도 가능프로젝션 위치와 깊이 버퍼를깊이 값을 이용해서 임의의위치에서의 두께 계산Convex가 아닌 경우 올바른계산법은 아님 (그래도 비교적 무난한결과가 나오는 것으로..)두께를 SH계수로 굽는 방법 각 버텍스에서 전 방향의 두께를 구한 후 SH 계수로 압축하여 버텍스에 저장탄젠트 스페이스로 가지고 있으면 좀 더 정확한 근사, 애니메이션에도 사용 가능굉장히 저렴한 셰이더 코드 (1채널 SH디코드)http://www.youtube.com/watch?v=_UMpeSEAwik^^
  • 13.
    참고Uncharted 2: CharacterLighting and Shading, John Hable, SIGGRAPH 2010Efficient Rendering of Human Skin, Eugene d'Eon, David Luebke, and Eric Enderton, Eurographics 2007Fast Skin Shading, John Hable, George Borshukov, and Jim Hejl, ShaderX7Real-Time Realistic Skin Translucency, Jorge jimnez, David Whelanhttp://www.gamedev.net/community/forums/topic.asp?topic_id=553749