Upcoming SlideShare
×

# SA09 Realtime education

719

Published on

Published in: Technology, Art & Photos
1 Like
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total Views
719
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
10
0
Likes
1
Embeds 0
No embeds

No notes for slide

### SA09 Realtime education

1. 1. Try Real-time Shader for artist. Claim back Shader to Softimage artist. CSR&D Support Dept. Artist Fumoto Kazuhiro
2. 2. Summary• Self-introduction• The Advantage to the artist• The Realtime-Shader to perform on Softimage• Hurdles on learning Shader – Shading – NormalMap, EnvironmentMap – Calculation for expression• Goal＞Result (to Cgfx)
3. 3. Self-introduction• About CS R&D Support Dept. – Graphic library development, Developmental environment, Investigation and experiment of the next generation graphic• About me Real-time graphic development. In-house tool (such as plug-in) development and support (mainly Softimage) for the artist. → Technical artist.
4. 4. An advantage to the artist.• The adjustment of the Shader parameter is easy.• WYSIWYG - You can see Game Graphics through data making.• You can get clear knowledge about shader. Express higher graphic by learning about the shader It doesn’t matter if you can’t write shader code
5. 5. Face Shader Demo…• About Fake image based lighting, Fake sub surface scattering…
6. 6. Simple IBL• There are three hurdles to express this Shader.
7. 7. Hurdle1• Dot (Inner) product
8. 8. Hurdle1• Shading works out with the dot product of the normal vector and the light vector. • The expression… N・L = cosθ Shading : cosθ Normar Vector : N Light Vector : L
9. 9. Hurdle1• For example… The angle of the Normal Vector and the Light Vector is 60 degrees. →Brightness is 0.5.
10. 10. Hurdle1• In Cg Shader… float dif1 = dot(normal, light);• The dot() calculates the dot-product which is based on the data in the parentheses.• The data in the parenthesis are Normal Vectors and Light Vectors.• This expression says that the result which is calculated by dot() is put in the variable is called dif1, and declares float (few floating mark).
11. 11. Hurdle1 struct v2f { float4 hpos : HPOS; float4 color : COL0; }; v2f main (• Softimage samples. float4 float4 pos : POSITION, nrml : NORMAL, uniform float4x4 simodelviewproj, uniform float4x4 simodelviewIT, uniform float4x4 simodelview, uniform float3 silightdirection_0 ) { v2f OUT; OUT.hpos = mul(simodelviewproj, pos); float3 normal = normalize(mul(simodelviewIT, nrml).xyz); float3 lDir1 = normalize(silightdirection_0); float dif1 = dot(normal, lDir1); if(dif1 < 0) dif1 = 0; float4 lColor1 = dif1; OUT.color = lColor1; return OUT; }
12. 12. Hurdle1 {• Softimage samples. v2f OUT; OUT.hpos = mul(simodelviewproj, pos); float3 normal = normalize(mul(simodelviewIT, nrml).xyz); float3 lDir1 = normalize(silightdirection_0); float dif1 = dot(normal, lDir1); if(dif1 < 0) dif1 = 0; float4 lColor1 = dif1; OUT.color = lColor1; return OUT; }
13. 13. Hurdle1• Necessary matter The dot() from two vector data is used to make Shading.
14. 14. Hurdle1 Other examples…• Relations of Vertex Shader and Fragment Shader• Specular – Blinn-Phong which uses the half vector. – Phong which uses the reflection vector.• Dot product applied use – Using Eyes Vector in substitution for a light vector.
15. 15. Hurdle2• Normal Map 1. Object space 2. Tangent space• Environment map
16. 16. Hurdle2• Normal map.
17. 17. Hurdle2• Object space normal map. The Object Space Normal Map directly uses RGB brightness of texture as XYZ of Normal data.• Actually, ( NormalTex – 0.5 ) × 2.
18. 18. Hurdle2• Tangent space normal map. • Need to obtain the Normal vector, Tangent vector, Binormal vector. • The value of the texture used as a normal data based on that data.
19. 19. Hurdle2• The kinds of Environment maps. 1. Simple Environment mapping (sphere) 2. Dual-Paraboloid mapping 3. Cube mapping
20. 20. Hurdle2• Dual-Paraboloid Environment mapping Uses two environment textures, each with a parabolic basis (requires two texture images).
21. 21. Hurdle1• In Cg Shaders… if (R.z < 0) ←Front { ┃ tc0.x = ( -(R.x / (2 * (1 - R.z))) + 0.5) * 0.5; ┃ tc0.y = R.y / (2 * (1 - R.z)) + 0.5; ┛ } else if (R.z >= 0) ←Back { ┃ tc0.x = (R.x / (2 * (1 + R.z)) + 0.5) * 0.5 + 0.5; ┃ tc0.y = R.y / (2 * (1 + R.z)) + 0.5; ┃ } ┛ • R：RefrectVector • Tc0.x：U to UV • Tc0.y：V to UV
22. 22. Hurdle3• Shader blending – Calculation technique to the result – Blurring
23. 23. Hurdle3• Calculation technique to the result Add (+), Subtract (-), Mutiply (*), Divide (/) Color data such as texture or shading which is for the final graphic. Shading × Texture + Flesnel (fake) ×Environmentmap
24. 24. Hurdle3• Image Based Lighting (Fake)…
25. 25. Hurdle3• Blurring of Texture. • Program used for blurring a shadow map. • Environmental map calculated as Specular + Environmental map calculated as Diffuse = Image Based Lighting (Fake)
26. 26. Hurdle3 float4 get_softtex(sampler2D map, float2 loc, int siz) {• float x,y; Blur product. float4 sum = 0; int scl; float n, v; Expert from float2 uv, texmapscale; scl = 4; GPU Gems v = 1.5f*scl; n = 4.0f*scl; texmapscale.x = 1.0f/512.0 * siz; set a parameter texmapscale.y = 1.0f/512.0 * siz; for( y=-v ; y<=v ; y+=1.0f ){ here for( x=-v; x<= v; x+=1.0f ){ uv.x = loc.x + x * texmapscale; uv.y = loc.y + y * texmapscale; sum += tex2D(map, uv); } } sum = sum / (n*n); sum.a = 1.0f; return(sum); }
27. 27. The First Goal
28. 28. An appendix• Link of parameter and animation (DEMO1)
29. 29. An appendix• Link of parameter and animation (DEMO2)
30. 30. Next step• Shader effect file CgFX, Dxfx…
31. 31. Document
32. 32. Q & A… Thank you… Fumoto_Kazuhiro@sega.co.jp
1. #### A particular slide catching your eye?

Clipping is a handy way to collect important slides you want to go back to later.