마른 하늘에 날구름 넣기
TRANSCRIPT
PowerPoint
Unity Procedural Sky System
3ProgrammerEffect Artist! / Technical Artist 4
2
5
Unity5 Procedural Sky Shader
5 sky shaderColor
5 4
?- .
sky Color .Tint
5 5
?
,
5 6
Unity5 Procedural Sky Shader
.
5 7
Unity5 Procedural Sky Shader
. .
5 8
1
5 10
1 !!!!!!!!!!!!
5 11
2 TERA - (2011)
5 12
2 Alpha Blending() PBS Reflection Probe
5 13
3Procedural Sky Shader
5 14
! !
! ! .
.. ..
.. ..
. .
.
. .
?
22
?
.
. 23
? , .
.
24
? . .
25
: ? .
26
: ? .
27
? , .
Mie Scattering( ) .
28
?
,, .
29
Shader Forge !
LightDir viewDirFresnel ! Fake Specular
, Light Color
Sky Color
Horizon ColorSky ColorTop Color
Horizon ColorSky ColorTop Color
34
Horizon + Sky+ Top Horizon +Sky ColorTop Colorfloat3 Sunset3 = lerp(_SkyColor.rgb, _SunSetColor.rgb, normalizeWorldPostion.y);float3 SkyColor = lerp(Sunset3.rgb, _HorizonColor.rgb, pow((1.0 - max(0, dot(viewDirection, float3(0, -1, 0)))), 8.0));float3 FinalSkyColor = lerp(SkyColor, _SkyTopColor.rgb, max(0, dot(viewDirection, float3(0, -1, 0))));Sky Color
Horizon Color
35
Color . -> Lerp ! Day ColorNight Color
36
Color . -> Lerp ! Day ColorNight Color Day Colorsun90Lerp 1
37
Color . -> Lerp ! Day ColorNight Color Night Colorsun-90Lerp 0
38
Directional Light .
= = _WorldSpaceLightPos0 x,y,z _WorldSpaceLightPos0 x,y,z , Lerp 0~1 ?
39
.. X,Y,Z ..
40
.. X,Y,Z ..
_WorldSpaceLightPos0.x -> Rotation Y
41
.. X,Y,Z .. _WorldSpaceLightPos0.y -> Rotation x
42
.. X,Y,Z .. _WorldSpaceLightPos0.y -> Rotation x
43
float3 emissive = lerp(DayColor.rgb, NightColor.rgb,_WorldSpaceLightPos0.y);
-90 night Color .. Night Colorsun-90Lerp 0
44
float3 emissive = lerp(FinalSkyColor.rgb, FinalSkyColor2.rgb,_WorldSpaceLightPos0.y);
-90 ..,_WorldSpaceLightPos0.y 0 ! 1~-1
45
- _WorldSpaceLightPos0.Y *0.5+0.5 !!
46
Horizon ColorSky Color Horizon + Sky+ Top Horizon +Sky ColorTop Color
Sunset color Lerp float3 Sunset = lerp(_SunSetColor.rgb, _SkyColor.rgb, saturate(dot(float3(0,1,0),_WorldSpaceLightPos0.xyz)));
47
Sky Color
Sunset colorfloat3 Sunset = lerp(_SunSetColor.rgb, _SkyColor.rgb, saturate(dot(float3(0,1,0),_WorldSpaceLightPos0.xyz)));
SkyColorsun90Lerp 1 0 1
48
float3 Sunset = lerp(_SunSetColor.rgb, _SkyColor.rgb, saturate(dot(float3(0,1,0),_WorldSpaceLightPos0.xyz))); SunsetColorsun0Lerp 0Sky Color
Sunset color
49
50
!
?UV !
52
Vertex .
uv
53
UV ..
54
UV ..
55
. .
56
. .
i.uv.y= i.uv.y*0.5 + 0.5;i.uv.x = (PI+atan2(i.posWorld.x ,i.posWorld.z)) /(2*PI);
57
58
4
,
Layer3Layer2 Layer1 Layer0
59
4
,
Layer3Layer2 Layer1 Layer0
60
4
,
Layer3Layer2 Layer1 Layer0
61
4
,
Layer3Layer2 Layer1 Layer0
62
.
63
64
Procedural Sky
Reflection Probe Unity PBR
-
- Reflection Probe
66
/
4 / 1
Tint ( )
67
Draw call 1
Lerp 4 #ifdef
68
Thank you
Sky Color http://www.gamedevforever.com/85 : http://www.cyberschool.co.kr/gh/gh14.htm https://ko.wikipedia.org/wiki http://tip.daum.net/question/48470138Tera Rendering Techniques http://www.slideshare.net/valhashi/2011-03-gametechtadptforpdf
69