SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Cheap Realistic Skin Shading
Overview
• 일반적인 Skin Models
• New Skin Model
– Ideas
– BRDF
– Layers
– Back Scattering
– Blended Normals
– Shadows
– Extras
• 결과
• 결론
일반적인 Skin Models
• Red wrapped lighting
– http://http.developer.nvidia.com/GPUGems/gpugems_ch16.html
• Texture-space diffusion
– http://http.developer.nvidia.com/GPUGems3/gpugems3_ch14.html
• Texture-space diffusion (12-tap)
– http://advances.realtimerendering.com/s2010/Hable-Uncharted2(SIGGRAPH 2010 Advanced RealTime Rendering
Course).pptx
• Screen-space diffusion
– http://giga.cps.unizar.es/~diegog/ficheros/pdf_papers/TAP_Jimenez_LR.pdf
• Blended Normals
– http://advances.realtimerendering.com/s2010/Hable-Uncharted2(SIGGRAPH 2010 Advanced RealTime Rendering
Course).pptx
• Offline “Fast-Skin Shaders”
– http://www.google.ca/#hl=en&source=hp&biw=1920&bih=965&q=fast+skin+shader&aq=f&aqi=g-
m5&aql=&oq=&gs_rfai=&fp=bc38547320fe36d4
일반적인 Skin Models
• 가장 현실적으로 표현할 수 있는 기술들이 인기가
있음
• 각 모델에는 장,단점이 있음
– 계산 비용은 매우 저렴하지만 조잡함
– 계산 비용이 크면 퀄리티가 우수함
• 어느정도 완성된(꾸며진) 조명에서는 잘 되지만 날카로운
조명에서는 안좋음
• 그 중간의 대안이 필요함
– 저렴하고 퀄리티가 좋아야 함
New Skin Model
• 물리적계산 없음
• 정확한 계산은 않하지만 보기에 좋음
• 다른 기술들을의 핵심 개념을 사용함
• Fast-Skin Shader, Human Skin Shader…
– 멀티 레이어 사용
– 물리적 기반 BRDF.
– 일반적으로 표현해야 할 것
• 그림자 가장자리의 붉은 표현
• 부드러운 표현
• 거친 표현 낮추기
New Skin Model - Ideas
• 다른 모델의 개념을 사용
– Kelemen/Szirmay-Kalos BRDF 사용
• 최적화와 상대적으로 계산 비용이 저렴
• 미리 계산하여 텍스쳐를 저장하여 사용함
– “Fast-Skin Shaders”의 멀티레이어를 사용
• 질감레이어 사용 (epidermal(표피), subdermal(피부,진피)).
• 조금 블러링 된 Epidermal layer
• 많이 블러링 된 Subdermal layer
• Diffuse(0.5) + Subdermal(0.2) + Epidermal(0.3)
– normal map을 혼합하여 부드러운 Blended Normals 을
사용
New Skin Model - BRDF
• Kelemen/Szirmay-Kalos BRDF 최적화
– fresnel to texture 저장
• 왜 하나의 specular term을 사용?
– beckmann texture 4개의 채널을 가질 수 있음
– 쉐이더에서 계산대신 4개의 float값을 사용
– Weigh them은 간단한 dot product 사용하여 구함
New Skin Model – BRDF (Code)
미리 계산하여 텍스쳐를 뽑음
정밀하게 계산할 필요가 없음// Computes beckmann distribution
// To bake to texture: texCoord.x = NdotH, texCoord.y = Exp
float4 GetBeckmannDistribution( float NdotH, float Exp )
{
// Some roughness weights
float4 m = half4(1, 0.12, 0.023, 0.012) * (Exp * Exp);
float alpha = acos( NdotH );
float ta = tan( alpha );
float4 val = 1.0 / (m * pow(NdotH, 4.0)) * exp(-(ta * ta) / m);
// Scale the value to fit within [0-1]
return 0.5 * pow( val , 0.1 );
}
// Computes fresnel reflectance (can be computed on the fly no problem)
// To bake to texture: HdotV = texCoord.x, texCoord.y = F0
float GetFresnelKS( float3 HdotV, float F0 )
{
float base = 1.0 - HdotV;
float exponential = pow( base, 5.0 );
return exponential + F0 * ( 1.0 - exponential );
}
Code modified from NVIDIA’s implementation.
New Skin Model – BRDF (Code)
float KelemenSzirmayTex( float3 N, float3 L, float3 V, float Exp, float F0 )
{
// Pretty straightforward
float NdotL = saturate(dot(N, L));
float h = L + V;
float H = normalize(h);
float HdotV = dot(H, V);
// Get fresnel from texture; 0.028 is a good value for F0
float fFresnel = tex2D(fresnelTex, float2(HdotV, F0));
// float fFresnel = GetFresnelKS(HdotV, F0 ); // Math version.
// Get beckmann distributions from texture
float4 fBeckmann = pow(2.0 * tex2D(beckmannSampler, float2(NdotH, Exp)), 10);
float4 fSpec = max( (fBeckmann * fFresnel) / dot( h, h ), 0 );
// Weight results using dot product
float result = saturate( NdotL ) * dot(fSpec, half4(1.0, 0.625, 0.075, 0.005));
return result;
}
New Skin Model – BRDF (Result)
New Skin Model - Layers
• 멀티 레이어를 만듬
– 레이어 마다 새로운 텍스쳐 생성
– 실제 해상도 보다 텍스쳐가 작으면 비용이 저렴함
– 라이트 레이어
• 블러된 상태에서 라이트를 계산
• Diffuse는 않함
• ~0.8 – 0.9 for epidermal.
• ~0.7 – 0.8 for subdermal.
– 각 텍스쳐에 조명을 적용함
Epidermal = 0.3, Subdermal = 0.2, Diffuse = 0.5
New Skin Model – Layers (Textures)
Diffuse Epidermal Subdermal
Back Scattering Specular Normal
New Skin Model – Layers (Image)
New Skin Model – Back Scattering
• 매우 간단함
– N·L과 간단한 계산
• 반투명 텍스쳐에 마스크 채널사용
– Subdermal(진피) map 알파채널 사용
– 버텍스 칼라값을 사용할수도 있음
• 날카로운 그림자를 사용안함
– 소프트 그림자를 사용하여 산란(backscattering)효과
– Translucent shadow maps.
– 그림자 영역이 재대로 가려지지 않을 수 있음
• 아직 기술이 불완전함
New Skin Model – Back Scattering (Code)
float3 BackLighting(float3 lightColor, float NdotL, float shadowMap, float transTex)
{
// Calculate back scattering.
float backLight = lerp(NdotL, 1.0, transTex) - lerp(NdotL, 1.0, 0.4);
float3 result = saturate(backLight) * lightColor * shadowMap * backScatterStrength * backScatterColor;
return result;
}
New Skin Model – Back Scattering (Image)
New Skin Model – Blended Normals
• blended normals 사용
– 언차티드 2 에서 사용
• 버택스 노말의 N·L 계산과 노말맵의 N·L 계산
– 다른 레이어들의 계산을 디퓨즈 채널에 통합
• 각 채널에 대한 강도를 설정
– 완벽하게 부드러운 normal은 필요하지 않음
– 사용할 수 있는 좋은 범위:
» Red = 0.5 – 0.7
» Green/Blue = 0.15 – 0.4
– Intensity 는 설정할수 있음
» 0-1
New Skin Model – Blended Normals (Code)
float3 BlendNormals(float lightDiffusion, float vertexNdotL, float bumpNdotL, float3
lightPos)
{
// 값은 조정이 가능
float redIntensity = lerp(0.0f, 0.6f, skinDiffusionAmount);
float greenBlueIntensity = lerp(0.0f, 0.4f, skinDiffusionAmount);
float red = lerp(vertexNdotL, bumpNdotL, redIntensity);
float greenBlue = lerp(vertexNdotL, bumpNdotL, greenBlueIntensity);
greenBlue = min(red, greenBlue); // 필요없는 부분 제거
float3 result = float3(red, greenBlue.xx);
return saturate(result);
}
New Skin Model – Blended Normals (Image)
New Skin Model – Shadows
• 확산 과정(라이트계산?)에서 그림자를
포함하지 않는 것에 대해 보상해야 함
• 2 Options:
– 블러된 그림자맵을 레이어에 사용
• 그림자에 블러를 사용하면 비용이 있음
• 오브젝트당 한다면 안 좋음
New Skin Model - Shadows (cont.)
• 선명한 그림자
– pow() 사용하여 선명한 그림자를 만듬
– Subdermal 사용하지 않음
– Epidermal 작은값을 사용 (~2-4).
– Diffuse 큰값을 사용 (~8-16).
– 상대적으로 그림자를 선명도를 조절
• 그림자 영역에 반사되는 붉은색(피)영역이 보임
New Skin Model - Shadows (cont.)
• Blended Shadows.
– 붉은(피) 표현의 그림자에 대해서 각 레이어의 그림자
선명도를 줄임
• 2개의 shadowpow.xy을 사용하여 계산
• 값을 미리 지정
• red 와 green/blue 채널을 혼합
– 빨간색 가장자리 색
– 가장자리일 경우 빨간색 채도 감소
• subdermal layer ( – ).
• epidermal layer ( – ).
• diffuse ( – ).
• 결과가 좋으면 무시할 수 있음
New Skin Model – Shadows (Code)
float3 BlendShadows(float2 shadowPow, float shadowMap)
{
float shadowR = pow(shadowMap, shadowPow.x); // subdermal
float shadowGB = pow(shadowMap, shadowPow.y); // epidermal
// Blend shadows
float red = lerp(shadowGB, shadowR, skinDiffusionAmount);
float greenBlue = lerp(shadowGB, shadowR, skinDiffusionAmount * 0.5);
float3 result = float3( red, greenBlue.xx );
// 그림자를 빨간색으로 만들기 위해..채도를 감소
result = lerp(result, dot(result, float3(0.33, 0.59, 0.11)), 0.75);
return saturate(result);
}
New Skin Model – Shadows (Image)
Pure diffuse layer Pure epidermal/subdermal layers
New Skin Model - Extras
• Rim Lighting
– fresnel (N·V) 계산
– rim term 계산
• Rim = smoothstep(0.0, 0.5, fresnel) * rimStrength;
– 라이트 계산뒤 specular 추가
• spec += rim * lightColor * pow(N·H, rimPower) * N·L
* shadowMap;
• Melanin(색소)
– Diffuse 텍스쳐의 luminance(휘도)를 계산
• lum = dot(diffuse, float3(0.33, 0.59, 0.11));
– diffuse 와 계산
– diffuse * lerp(1.0, diffuse*lum, melanin);
New Skin Model – Notes
• 선명한 그림자는 모든 레이어서 사용 할 필요가
없음
– 단순화된 그림자를 적용할 수 있음
– 피 표현에 대해 좋다
• 여러 번 blended normals 수행
– 각 레이어 계산시 노말에 대한 강도를 조절하여 다향성을 만듬
• Backscattering 색상은 제한 되지 않음
– Subdermal texture.
– 반투명 램프
결과
결과
Standard NdotL + Blinn-phong (physical model) Skin Shading, no SSS Skin Shading, full SSS
결론
• Kelemen/Szirmay-Kalos BRDF 사용
– 텍스쳐를 구워 사용 beckmann, fresnel
• 라이트가 래핑된 레이어에 산란 (subsurface scattering)
– Epidermal, subdermal.
– Keep wrapping at a minimum to avoid washing out the lighting.
• 부드러운 노말을 사용 (blended normals )
• 그림자에 pow() 함수를 통해 선명도를 조절하여 피기가 도는
그림자를 만듬
• Backscattering 은 간단한 마스크 맵을 사용해서 N·L 계산
– 매우 저렴한 계산
• 추가 효과 적용
– rim lighting ,melanin
결론
• 비용이 저렴하고 보기 좋음
• 다양한 분산효과(scattering effects)
• (bleeding shadows, back lighting)
• 여러 캐릭터에 적용할 수 있음
• 확산 방법이 정확하지 않음
• 완전하지 않음
Thanks for viewing! 
• References:
• Screen-Space Perceptual Rendering of Human Skin, Jorge Jimenez, Veronica Sundstedt,
Diego Gutierrez, 2009
– http://giga.cps.unizar.es/~diegog/ficheros/pdf_papers/TAP_Jimenez_LR.pdf
• Efficient Rendering of Human Skin, Eugene d'Eon, David Luebke, and Eric Enderton,
Eurographics 2007
– http://http.developer.nvidia.com/GPUGems3/gpugems3_ch14.html
• Real-Time Approximations to Subsurface Scattering, Simon Green, 2004
– http://http.developer.nvidia.com/GPUGems/gpugems_ch16.html
• Uncharted 2: Character Lighting and Shading, John Hable, 2010
• http://advances.realtimerendering.com/s2010/Hable-
Uncharted2(SIGGRAPH%202010%20Advanced%20RealTime%20Rendering%20Course).pptx
• Crafting Physically Motivated Shading Models for Game Development, Naty Hoffman, 2010
– http://renderwonk.com/publications/s2010-shading-
course/hoffman/s2010_physically_based_shading_hoffman_b.pdf
• Real-Time Realistic Skin Translucency, Jorge Jimenez, David Whelan, Veronica Sundstedt,
Diego Gutierrez, 2010
• http://giga.cps.unizar.es/~diegog/projects/IEEE/ieee.html
FinHead model available at Infinite-3D
http://www.youtube.com/watch?v=AX9zQ5BdAvo

Contenu connexe

Tendances

논문-정규분포변환
논문-정규분포변환논문-정규분포변환
논문-정규분포변환jdo
 
언차티드4 테크아트 파트3 MicroShadowBRDF Term
언차티드4 테크아트 파트3 MicroShadowBRDF Term언차티드4 테크아트 파트3 MicroShadowBRDF Term
언차티드4 테크아트 파트3 MicroShadowBRDF TermDae Hyek KIM
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1MoonLightMS
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우Sukwoo Lee
 
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)Sukwoo Lee
 
2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑Sukwoo Lee
 
Improved techniques for grid mapping with rao blackwellized particle filters 번역
Improved techniques for grid mapping with rao blackwellized particle filters 번역Improved techniques for grid mapping with rao blackwellized particle filters 번역
Improved techniques for grid mapping with rao blackwellized particle filters 번역jdo
 
[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자MoonLightMS
 
[0212 박민수]환경 매핑
[0212 박민수]환경 매핑[0212 박민수]환경 매핑
[0212 박민수]환경 매핑MoonLightMS
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리changehee lee
 
2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링Sukwoo Lee
 
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기동석 김
 
Gamma and linear color-space
Gamma and linear color-spaceGamma and linear color-space
Gamma and linear color-space민웅 이
 
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Dae Hyek KIM
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2Kyoung Seok(경석) Ko(고)
 
Build Lightmap system
Build Lightmap systemBuild Lightmap system
Build Lightmap systemJaesik Hwang
 

Tendances (20)

논문-정규분포변환
논문-정규분포변환논문-정규분포변환
논문-정규분포변환
 
언차티드4 테크아트 파트3 MicroShadowBRDF Term
언차티드4 테크아트 파트3 MicroShadowBRDF Term언차티드4 테크아트 파트3 MicroShadowBRDF Term
언차티드4 테크아트 파트3 MicroShadowBRDF Term
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1
 
Bump Mapping
Bump MappingBump Mapping
Bump Mapping
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우
 
그림자 이야기
그림자 이야기그림자 이야기
그림자 이야기
 
Uncharted4 part1
Uncharted4 part1Uncharted4 part1
Uncharted4 part1
 
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
 
2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑
 
Improved techniques for grid mapping with rao blackwellized particle filters 번역
Improved techniques for grid mapping with rao blackwellized particle filters 번역Improved techniques for grid mapping with rao blackwellized particle filters 번역
Improved techniques for grid mapping with rao blackwellized particle filters 번역
 
[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자
 
[0212 박민수]환경 매핑
[0212 박민수]환경 매핑[0212 박민수]환경 매핑
[0212 박민수]환경 매핑
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리
 
2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링
 
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
 
Motion blur
Motion blurMotion blur
Motion blur
 
Gamma and linear color-space
Gamma and linear color-spaceGamma and linear color-space
Gamma and linear color-space
 
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2
 
Build Lightmap system
Build Lightmap systemBuild Lightmap system
Build Lightmap system
 

En vedette

科務報告(企劃科) 2011.08.25(定稿版)
科務報告(企劃科) 2011.08.25(定稿版)科務報告(企劃科) 2011.08.25(定稿版)
科務報告(企劃科) 2011.08.25(定稿版)gongwujugongwuju
 
公園管理二科業務簡報(100.8.2).pptnew
公園管理二科業務簡報(100.8.2).pptnew公園管理二科業務簡報(100.8.2).pptnew
公園管理二科業務簡報(100.8.2).pptnewgongwujugongwuju
 
新建二科1010524局務會議業務報告(精簡版) (1)
新建二科1010524局務會議業務報告(精簡版) (1)新建二科1010524局務會議業務報告(精簡版) (1)
新建二科1010524局務會議業務報告(精簡版) (1)gongwujugongwuju
 
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...Lenka Križanová
 
第47次局務會議簡報1123(簡版)
第47次局務會議簡報1123(簡版)第47次局務會議簡報1123(簡版)
第47次局務會議簡報1123(簡版)gongwujugongwuju
 
Internet decency legislation
Internet decency legislationInternet decency legislation
Internet decency legislationTgarmon34
 
局務會議業務報告 養護工程二科530
局務會議業務報告 養護工程二科530局務會議業務報告 養護工程二科530
局務會議業務報告 養護工程二科530gongwujugongwuju
 
不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26gongwujugongwuju
 
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2gongwujugongwuju
 
2010 Annual Meeting R5 Bs
2010 Annual Meeting R5 Bs2010 Annual Meeting R5 Bs
2010 Annual Meeting R5 Bspeterderaedt
 
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15Lenka Križanová
 
第40局局務會議紀錄
第40局局務會議紀錄第40局局務會議紀錄
第40局局務會議紀錄gongwujugongwuju
 
101工務局記者會(0323)
101工務局記者會(0323)101工務局記者會(0323)
101工務局記者會(0323)gongwujugongwuju
 
100.07.20 公園一科 科務報告
100.07.20 公園一科 科務報告100.07.20 公園一科 科務報告
100.07.20 公園一科 科務報告gongwujugongwuju
 
2012南瀛綠都心迎春花卉展
2012南瀛綠都心迎春花卉展2012南瀛綠都心迎春花卉展
2012南瀛綠都心迎春花卉展gongwujugongwuju
 
100.11.23養護科科務報告
100.11.23養護科科務報告100.11.23養護科科務報告
100.11.23養護科科務報告gongwujugongwuju
 
100.8.17養護科科務報告
100.8.17養護科科務報告100.8.17養護科科務報告
100.8.17養護科科務報告gongwujugongwuju
 
Who Goes to Hell? Hitler? Atheists?
Who Goes to Hell? Hitler? Atheists?Who Goes to Hell? Hitler? Atheists?
Who Goes to Hell? Hitler? Atheists?SwordSharp Studios
 

En vedette (20)

科務報告(企劃科) 2011.08.25(定稿版)
科務報告(企劃科) 2011.08.25(定稿版)科務報告(企劃科) 2011.08.25(定稿版)
科務報告(企劃科) 2011.08.25(定稿版)
 
局務會議簡報10008
局務會議簡報10008局務會議簡報10008
局務會議簡報10008
 
公園管理二科業務簡報(100.8.2).pptnew
公園管理二科業務簡報(100.8.2).pptnew公園管理二科業務簡報(100.8.2).pptnew
公園管理二科業務簡報(100.8.2).pptnew
 
新建二科1010524局務會議業務報告(精簡版) (1)
新建二科1010524局務會議業務報告(精簡版) (1)新建二科1010524局務會議業務報告(精簡版) (1)
新建二科1010524局務會議業務報告(精簡版) (1)
 
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...
Prezentácia - Študentská spoločnosť STROM (SOŠ hotelových služieb a obchodu, ...
 
第47次局務會議簡報1123(簡版)
第47次局務會議簡報1123(簡版)第47次局務會議簡報1123(簡版)
第47次局務會議簡報1123(簡版)
 
1010606
10106061010606
1010606
 
Internet decency legislation
Internet decency legislationInternet decency legislation
Internet decency legislation
 
局務會議業務報告 養護工程二科530
局務會議業務報告 養護工程二科530局務會議業務報告 養護工程二科530
局務會議業務報告 養護工程二科530
 
不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26不違背職務行賄罪簡介100.08.26
不違背職務行賄罪簡介100.08.26
 
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2
工務局100年度追加預算及101年度預算工作項目及工作內容業務報告 100.11.25 2
 
2010 Annual Meeting R5 Bs
2010 Annual Meeting R5 Bs2010 Annual Meeting R5 Bs
2010 Annual Meeting R5 Bs
 
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15
Innovation and Creativity Camp | Viac ako peniaze Prezentácia č.15
 
第40局局務會議紀錄
第40局局務會議紀錄第40局局務會議紀錄
第40局局務會議紀錄
 
101工務局記者會(0323)
101工務局記者會(0323)101工務局記者會(0323)
101工務局記者會(0323)
 
100.07.20 公園一科 科務報告
100.07.20 公園一科 科務報告100.07.20 公園一科 科務報告
100.07.20 公園一科 科務報告
 
2012南瀛綠都心迎春花卉展
2012南瀛綠都心迎春花卉展2012南瀛綠都心迎春花卉展
2012南瀛綠都心迎春花卉展
 
100.11.23養護科科務報告
100.11.23養護科科務報告100.11.23養護科科務報告
100.11.23養護科科務報告
 
100.8.17養護科科務報告
100.8.17養護科科務報告100.8.17養護科科務報告
100.8.17養護科科務報告
 
Who Goes to Hell? Hitler? Atheists?
Who Goes to Hell? Hitler? Atheists?Who Goes to Hell? Hitler? Atheists?
Who Goes to Hell? Hitler? Atheists?
 

Similaire à Cheap realisticskinshading kor

Reflective Shadow Maps
Reflective Shadow MapsReflective Shadow Maps
Reflective Shadow MapsBongseok Cho
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)해강
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬현찬 양
 
[ShaderX5] 4.4 Edge Masking and Per-Texel Depth Extent Propagation For Comput...
[ShaderX5] 4.4 Edge Masking and Per-Texel Depth Extent Propagation For Comput...[ShaderX5] 4.4 Edge Masking and Per-Texel Depth Extent Propagation For Comput...
[ShaderX5] 4.4 Edge Masking and Per-Texel Depth Extent Propagation For Comput...종빈 오
 
120427 celluar texture
120427 celluar texture120427 celluar texture
120427 celluar textureCARROTCG
 
Deferred Shading
Deferred ShadingDeferred Shading
Deferred Shading종빈 오
 
Alexnet paper review
Alexnet paper reviewAlexnet paper review
Alexnet paper review오 혜린
 
[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shadingMinGeun Park
 
Rendering realistic Ice objects
Rendering realistic Ice objectsRendering realistic Ice objects
Rendering realistic Ice objectsyong gyun im
 
Rendering realistic Ice objects
Rendering realistic Ice objectsRendering realistic Ice objects
Rendering realistic Ice objectsyong gyun im
 
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field종빈 오
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments종빈 오
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습Juhui Park
 
10_Human Skin Rendering
10_Human Skin Rendering10_Human Skin Rendering
10_Human Skin Renderingnoerror
 
Mlp logical input pattern classfication report doc
Mlp logical input pattern classfication report docMlp logical input pattern classfication report doc
Mlp logical input pattern classfication report doc우진 신
 

Similaire à Cheap realisticskinshading kor (20)

Reflective Shadow Maps
Reflective Shadow MapsReflective Shadow Maps
Reflective Shadow Maps
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬
 
High dynamic range
High dynamic rangeHigh dynamic range
High dynamic range
 
[ShaderX5] 4.4 Edge Masking and Per-Texel Depth Extent Propagation For Comput...
[ShaderX5] 4.4 Edge Masking and Per-Texel Depth Extent Propagation For Comput...[ShaderX5] 4.4 Edge Masking and Per-Texel Depth Extent Propagation For Comput...
[ShaderX5] 4.4 Edge Masking and Per-Texel Depth Extent Propagation For Comput...
 
Ndc11 이창희_hdr
Ndc11 이창희_hdrNdc11 이창희_hdr
Ndc11 이창희_hdr
 
120427 celluar texture
120427 celluar texture120427 celluar texture
120427 celluar texture
 
Deferred Shading
Deferred ShadingDeferred Shading
Deferred Shading
 
Alexnet paper review
Alexnet paper reviewAlexnet paper review
Alexnet paper review
 
[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shading
 
Rendering realistic Ice objects
Rendering realistic Ice objectsRendering realistic Ice objects
Rendering realistic Ice objects
 
Rendering realistic Ice objects
Rendering realistic Ice objectsRendering realistic Ice objects
Rendering realistic Ice objects
 
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
HistoryOfCNN
HistoryOfCNNHistoryOfCNN
HistoryOfCNN
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습
 
10_Human Skin Rendering
10_Human Skin Rendering10_Human Skin Rendering
10_Human Skin Rendering
 
Mlp logical input pattern classfication report doc
Mlp logical input pattern classfication report docMlp logical input pattern classfication report doc
Mlp logical input pattern classfication report doc
 

Plus de 민웅 이

Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...민웅 이
 
PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation 민웅 이
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11민웅 이
 
Post processing in_color
Post processing in_colorPost processing in_color
Post processing in_color민웅 이
 
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리민웅 이
 
Valient killzone ps4 lighting
Valient killzone ps4 lightingValient killzone ps4 lighting
Valient killzone ps4 lighting민웅 이
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4민웅 이
 
Microfacet brdf
Microfacet brdfMicrofacet brdf
Microfacet brdf민웅 이
 
Wrapped diffuse
Wrapped diffuseWrapped diffuse
Wrapped diffuse민웅 이
 
3D Engine Tools with C++/CLR
3D Engine Tools with C++/CLR3D Engine Tools with C++/CLR
3D Engine Tools with C++/CLR민웅 이
 
Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)민웅 이
 

Plus de 민웅 이 (12)

Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
 
PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11
 
Post processing in_color
Post processing in_colorPost processing in_color
Post processing in_color
 
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
 
Valient killzone ps4 lighting
Valient killzone ps4 lightingValient killzone ps4 lighting
Valient killzone ps4 lighting
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
 
Microfacet brdf
Microfacet brdfMicrofacet brdf
Microfacet brdf
 
Wrapped diffuse
Wrapped diffuseWrapped diffuse
Wrapped diffuse
 
3D Engine Tools with C++/CLR
3D Engine Tools with C++/CLR3D Engine Tools with C++/CLR
3D Engine Tools with C++/CLR
 
Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)
 
Ceh
CehCeh
Ceh
 

Cheap realisticskinshading kor

  • 2. Overview • 일반적인 Skin Models • New Skin Model – Ideas – BRDF – Layers – Back Scattering – Blended Normals – Shadows – Extras • 결과 • 결론
  • 3. 일반적인 Skin Models • Red wrapped lighting – http://http.developer.nvidia.com/GPUGems/gpugems_ch16.html • Texture-space diffusion – http://http.developer.nvidia.com/GPUGems3/gpugems3_ch14.html • Texture-space diffusion (12-tap) – http://advances.realtimerendering.com/s2010/Hable-Uncharted2(SIGGRAPH 2010 Advanced RealTime Rendering Course).pptx • Screen-space diffusion – http://giga.cps.unizar.es/~diegog/ficheros/pdf_papers/TAP_Jimenez_LR.pdf • Blended Normals – http://advances.realtimerendering.com/s2010/Hable-Uncharted2(SIGGRAPH 2010 Advanced RealTime Rendering Course).pptx • Offline “Fast-Skin Shaders” – http://www.google.ca/#hl=en&source=hp&biw=1920&bih=965&q=fast+skin+shader&aq=f&aqi=g- m5&aql=&oq=&gs_rfai=&fp=bc38547320fe36d4
  • 4. 일반적인 Skin Models • 가장 현실적으로 표현할 수 있는 기술들이 인기가 있음 • 각 모델에는 장,단점이 있음 – 계산 비용은 매우 저렴하지만 조잡함 – 계산 비용이 크면 퀄리티가 우수함 • 어느정도 완성된(꾸며진) 조명에서는 잘 되지만 날카로운 조명에서는 안좋음 • 그 중간의 대안이 필요함 – 저렴하고 퀄리티가 좋아야 함
  • 5. New Skin Model • 물리적계산 없음 • 정확한 계산은 않하지만 보기에 좋음 • 다른 기술들을의 핵심 개념을 사용함 • Fast-Skin Shader, Human Skin Shader… – 멀티 레이어 사용 – 물리적 기반 BRDF. – 일반적으로 표현해야 할 것 • 그림자 가장자리의 붉은 표현 • 부드러운 표현 • 거친 표현 낮추기
  • 6. New Skin Model - Ideas • 다른 모델의 개념을 사용 – Kelemen/Szirmay-Kalos BRDF 사용 • 최적화와 상대적으로 계산 비용이 저렴 • 미리 계산하여 텍스쳐를 저장하여 사용함 – “Fast-Skin Shaders”의 멀티레이어를 사용 • 질감레이어 사용 (epidermal(표피), subdermal(피부,진피)). • 조금 블러링 된 Epidermal layer • 많이 블러링 된 Subdermal layer • Diffuse(0.5) + Subdermal(0.2) + Epidermal(0.3) – normal map을 혼합하여 부드러운 Blended Normals 을 사용
  • 7. New Skin Model - BRDF • Kelemen/Szirmay-Kalos BRDF 최적화 – fresnel to texture 저장 • 왜 하나의 specular term을 사용? – beckmann texture 4개의 채널을 가질 수 있음 – 쉐이더에서 계산대신 4개의 float값을 사용 – Weigh them은 간단한 dot product 사용하여 구함
  • 8. New Skin Model – BRDF (Code) 미리 계산하여 텍스쳐를 뽑음 정밀하게 계산할 필요가 없음// Computes beckmann distribution // To bake to texture: texCoord.x = NdotH, texCoord.y = Exp float4 GetBeckmannDistribution( float NdotH, float Exp ) { // Some roughness weights float4 m = half4(1, 0.12, 0.023, 0.012) * (Exp * Exp); float alpha = acos( NdotH ); float ta = tan( alpha ); float4 val = 1.0 / (m * pow(NdotH, 4.0)) * exp(-(ta * ta) / m); // Scale the value to fit within [0-1] return 0.5 * pow( val , 0.1 ); } // Computes fresnel reflectance (can be computed on the fly no problem) // To bake to texture: HdotV = texCoord.x, texCoord.y = F0 float GetFresnelKS( float3 HdotV, float F0 ) { float base = 1.0 - HdotV; float exponential = pow( base, 5.0 ); return exponential + F0 * ( 1.0 - exponential ); } Code modified from NVIDIA’s implementation.
  • 9. New Skin Model – BRDF (Code) float KelemenSzirmayTex( float3 N, float3 L, float3 V, float Exp, float F0 ) { // Pretty straightforward float NdotL = saturate(dot(N, L)); float h = L + V; float H = normalize(h); float HdotV = dot(H, V); // Get fresnel from texture; 0.028 is a good value for F0 float fFresnel = tex2D(fresnelTex, float2(HdotV, F0)); // float fFresnel = GetFresnelKS(HdotV, F0 ); // Math version. // Get beckmann distributions from texture float4 fBeckmann = pow(2.0 * tex2D(beckmannSampler, float2(NdotH, Exp)), 10); float4 fSpec = max( (fBeckmann * fFresnel) / dot( h, h ), 0 ); // Weight results using dot product float result = saturate( NdotL ) * dot(fSpec, half4(1.0, 0.625, 0.075, 0.005)); return result; }
  • 10. New Skin Model – BRDF (Result)
  • 11. New Skin Model - Layers • 멀티 레이어를 만듬 – 레이어 마다 새로운 텍스쳐 생성 – 실제 해상도 보다 텍스쳐가 작으면 비용이 저렴함 – 라이트 레이어 • 블러된 상태에서 라이트를 계산 • Diffuse는 않함 • ~0.8 – 0.9 for epidermal. • ~0.7 – 0.8 for subdermal. – 각 텍스쳐에 조명을 적용함 Epidermal = 0.3, Subdermal = 0.2, Diffuse = 0.5
  • 12. New Skin Model – Layers (Textures) Diffuse Epidermal Subdermal Back Scattering Specular Normal
  • 13. New Skin Model – Layers (Image)
  • 14. New Skin Model – Back Scattering • 매우 간단함 – N·L과 간단한 계산 • 반투명 텍스쳐에 마스크 채널사용 – Subdermal(진피) map 알파채널 사용 – 버텍스 칼라값을 사용할수도 있음 • 날카로운 그림자를 사용안함 – 소프트 그림자를 사용하여 산란(backscattering)효과 – Translucent shadow maps. – 그림자 영역이 재대로 가려지지 않을 수 있음 • 아직 기술이 불완전함
  • 15. New Skin Model – Back Scattering (Code) float3 BackLighting(float3 lightColor, float NdotL, float shadowMap, float transTex) { // Calculate back scattering. float backLight = lerp(NdotL, 1.0, transTex) - lerp(NdotL, 1.0, 0.4); float3 result = saturate(backLight) * lightColor * shadowMap * backScatterStrength * backScatterColor; return result; }
  • 16. New Skin Model – Back Scattering (Image)
  • 17. New Skin Model – Blended Normals • blended normals 사용 – 언차티드 2 에서 사용 • 버택스 노말의 N·L 계산과 노말맵의 N·L 계산 – 다른 레이어들의 계산을 디퓨즈 채널에 통합 • 각 채널에 대한 강도를 설정 – 완벽하게 부드러운 normal은 필요하지 않음 – 사용할 수 있는 좋은 범위: » Red = 0.5 – 0.7 » Green/Blue = 0.15 – 0.4 – Intensity 는 설정할수 있음 » 0-1
  • 18. New Skin Model – Blended Normals (Code) float3 BlendNormals(float lightDiffusion, float vertexNdotL, float bumpNdotL, float3 lightPos) { // 값은 조정이 가능 float redIntensity = lerp(0.0f, 0.6f, skinDiffusionAmount); float greenBlueIntensity = lerp(0.0f, 0.4f, skinDiffusionAmount); float red = lerp(vertexNdotL, bumpNdotL, redIntensity); float greenBlue = lerp(vertexNdotL, bumpNdotL, greenBlueIntensity); greenBlue = min(red, greenBlue); // 필요없는 부분 제거 float3 result = float3(red, greenBlue.xx); return saturate(result); }
  • 19. New Skin Model – Blended Normals (Image)
  • 20. New Skin Model – Shadows • 확산 과정(라이트계산?)에서 그림자를 포함하지 않는 것에 대해 보상해야 함 • 2 Options: – 블러된 그림자맵을 레이어에 사용 • 그림자에 블러를 사용하면 비용이 있음 • 오브젝트당 한다면 안 좋음
  • 21. New Skin Model - Shadows (cont.) • 선명한 그림자 – pow() 사용하여 선명한 그림자를 만듬 – Subdermal 사용하지 않음 – Epidermal 작은값을 사용 (~2-4). – Diffuse 큰값을 사용 (~8-16). – 상대적으로 그림자를 선명도를 조절 • 그림자 영역에 반사되는 붉은색(피)영역이 보임
  • 22. New Skin Model - Shadows (cont.) • Blended Shadows. – 붉은(피) 표현의 그림자에 대해서 각 레이어의 그림자 선명도를 줄임 • 2개의 shadowpow.xy을 사용하여 계산 • 값을 미리 지정 • red 와 green/blue 채널을 혼합 – 빨간색 가장자리 색 – 가장자리일 경우 빨간색 채도 감소 • subdermal layer ( – ). • epidermal layer ( – ). • diffuse ( – ). • 결과가 좋으면 무시할 수 있음
  • 23. New Skin Model – Shadows (Code) float3 BlendShadows(float2 shadowPow, float shadowMap) { float shadowR = pow(shadowMap, shadowPow.x); // subdermal float shadowGB = pow(shadowMap, shadowPow.y); // epidermal // Blend shadows float red = lerp(shadowGB, shadowR, skinDiffusionAmount); float greenBlue = lerp(shadowGB, shadowR, skinDiffusionAmount * 0.5); float3 result = float3( red, greenBlue.xx ); // 그림자를 빨간색으로 만들기 위해..채도를 감소 result = lerp(result, dot(result, float3(0.33, 0.59, 0.11)), 0.75); return saturate(result); }
  • 24. New Skin Model – Shadows (Image) Pure diffuse layer Pure epidermal/subdermal layers
  • 25. New Skin Model - Extras • Rim Lighting – fresnel (N·V) 계산 – rim term 계산 • Rim = smoothstep(0.0, 0.5, fresnel) * rimStrength; – 라이트 계산뒤 specular 추가 • spec += rim * lightColor * pow(N·H, rimPower) * N·L * shadowMap; • Melanin(색소) – Diffuse 텍스쳐의 luminance(휘도)를 계산 • lum = dot(diffuse, float3(0.33, 0.59, 0.11)); – diffuse 와 계산 – diffuse * lerp(1.0, diffuse*lum, melanin);
  • 26. New Skin Model – Notes • 선명한 그림자는 모든 레이어서 사용 할 필요가 없음 – 단순화된 그림자를 적용할 수 있음 – 피 표현에 대해 좋다 • 여러 번 blended normals 수행 – 각 레이어 계산시 노말에 대한 강도를 조절하여 다향성을 만듬 • Backscattering 색상은 제한 되지 않음 – Subdermal texture. – 반투명 램프
  • 28. 결과 Standard NdotL + Blinn-phong (physical model) Skin Shading, no SSS Skin Shading, full SSS
  • 29. 결론 • Kelemen/Szirmay-Kalos BRDF 사용 – 텍스쳐를 구워 사용 beckmann, fresnel • 라이트가 래핑된 레이어에 산란 (subsurface scattering) – Epidermal, subdermal. – Keep wrapping at a minimum to avoid washing out the lighting. • 부드러운 노말을 사용 (blended normals ) • 그림자에 pow() 함수를 통해 선명도를 조절하여 피기가 도는 그림자를 만듬 • Backscattering 은 간단한 마스크 맵을 사용해서 N·L 계산 – 매우 저렴한 계산 • 추가 효과 적용 – rim lighting ,melanin
  • 30. 결론 • 비용이 저렴하고 보기 좋음 • 다양한 분산효과(scattering effects) • (bleeding shadows, back lighting) • 여러 캐릭터에 적용할 수 있음 • 확산 방법이 정확하지 않음 • 완전하지 않음
  • 31. Thanks for viewing!  • References: • Screen-Space Perceptual Rendering of Human Skin, Jorge Jimenez, Veronica Sundstedt, Diego Gutierrez, 2009 – http://giga.cps.unizar.es/~diegog/ficheros/pdf_papers/TAP_Jimenez_LR.pdf • Efficient Rendering of Human Skin, Eugene d'Eon, David Luebke, and Eric Enderton, Eurographics 2007 – http://http.developer.nvidia.com/GPUGems3/gpugems3_ch14.html • Real-Time Approximations to Subsurface Scattering, Simon Green, 2004 – http://http.developer.nvidia.com/GPUGems/gpugems_ch16.html • Uncharted 2: Character Lighting and Shading, John Hable, 2010 • http://advances.realtimerendering.com/s2010/Hable- Uncharted2(SIGGRAPH%202010%20Advanced%20RealTime%20Rendering%20Course).pptx • Crafting Physically Motivated Shading Models for Game Development, Naty Hoffman, 2010 – http://renderwonk.com/publications/s2010-shading- course/hoffman/s2010_physically_based_shading_hoffman_b.pdf • Real-Time Realistic Skin Translucency, Jorge Jimenez, David Whelan, Veronica Sundstedt, Diego Gutierrez, 2010 • http://giga.cps.unizar.es/~diegog/projects/IEEE/ieee.html
  • 32. FinHead model available at Infinite-3D http://www.youtube.com/watch?v=AX9zQ5BdAvo

Notes de l'éditeur

  1. 계산 비용이 적고 리얼한 피부 쉐이딩
  2. 여기에 있는 문서 및 논문을 바탕으로 설계
  3. Weigh 무게