Changeset 1260
- Timestamp:
- Apr 21, 2012, 6:58:36 PM (11 years ago)
- Location:
- trunk/orbital
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/orbital/mesh.h
r1256 r1260 33 33 "uniform mat4 in_ModelView;" 34 34 "uniform mat4 in_Proj;" 35 "uniform mat3 in_NormalMat;" 35 36 "varying vec4 pass_Color;" 36 37 "" 38 "vec4 Light = vec4(10.0, 1.0, 1.0, 1.0);" 39 "vec3 Kd = vec3(1.0, 0.8, 0.8);" 40 "vec3 Ld = vec3(1.0, 0.8, 0.8);" 41 "" 37 42 "void main(void) {" 38 " vec4 tmp = in_ModelView * vec4(in_Vertex, 1.0);" 39 " gl_Position = in_Proj * tmp;" 40 " pass_Color = in_Color;" 43 " vec3 tnorm = normalize(in_NormalMat * in_Normal);" 44 " vec4 Eye = in_ModelView * vec4(in_Vertex, 1.0);" 45 " vec3 s = normalize((Light - Eye).xyz);" 46 "" 47 " pass_Color = vec4(Ld * Kd * max(dot(s, tnorm), 0.0), 1.0);" 48 " gl_Position = in_Proj * Eye;" 41 49 "}", 42 50 … … 53 61 " uniform float4x4 in_ModelView," 54 62 " uniform float4x4 in_Proj," 63 " uniform float3x3 in_NormalMat," 55 64 " out float4 out_Position : POSITION," 56 65 " out float4 pass_Color : COLOR) {" 57 " pass_Color = in_Color;" 58 " float4 tmp = mul(in_ModelView, float4(in_Vertex, 1.0));" 59 " out_Position = mul(in_Proj, tmp);" 66 " float4x4 Light = float4x4(10.0, 1.0, 1.0, 1.0);" 67 " float3x3 Kd = float3x3(1.0, 0.8, 0.8);" 68 " float3x3 Ld = float3x3(1.0, 0.8, 0.8);" 69 "" 70 " float3x3 tnorm = normalize(mul(in_NormalMat, in_Normal));" 71 " float4x4 Eye = mul(in_ModelView, float4x4(in_Vertex, 1.0));" 72 " float3x3 s = normalize((Light - Eye).xyz);" 73 "" 74 " pass_Color = float4x4(Ld * Kd * max(dot(s, tnorm), 0.0), 1.0);" 75 " out_Position = mul(in_Proj, Eye);" 60 76 "}", 61 77 … … 68 84 m_gpu.modelview = m_gpu.shader->GetUniformLocation("in_ModelView"); 69 85 m_gpu.proj = m_gpu.shader->GetUniformLocation("in_Proj"); 86 m_gpu.normalmat = m_gpu.shader->GetUniformLocation("in_NormalMat"); 70 87 m_gpu.coord = m_gpu.shader->GetAttribLocation("in_Vertex", 71 88 VertexUsage::Position, 0); … … 118 135 } 119 136 120 void Render(mat4 const &modelview, mat4 const &proj )137 void Render(mat4 const &modelview, mat4 const &proj, mat3 const &normalmat) 121 138 { 122 139 m_gpu.shader->Bind(); 123 140 m_gpu.shader->SetUniform(m_gpu.modelview, modelview); 124 141 m_gpu.shader->SetUniform(m_gpu.proj, proj); 142 m_gpu.shader->SetUniform(m_gpu.normalmat, normalmat); 125 143 m_gpu.vdecl->SetStream(m_gpu.vbo, m_gpu.coord, m_gpu.norm, m_gpu.color); 126 144 m_gpu.vdecl->Bind(); … … 389 407 Shader *shader; 390 408 ShaderAttrib coord, norm, color; 391 ShaderUniform modelview, proj ;409 ShaderUniform modelview, proj, normalmat; 392 410 VertexDeclaration *vdecl; 393 411 VertexBuffer *vbo; -
trunk/orbital/orbital.cpp
r1256 r1260 54 54 m_modelview = view * model * anim; 55 55 m_proj = proj; 56 m_normalmat = transpose(inverse(mat3(m_modelview))); 56 57 } 57 58 … … 68 69 } 69 70 70 m.Render(m_modelview, m_proj );71 m.Render(m_modelview, m_proj, m_normalmat); 71 72 } 72 73 -
trunk/orbital/orbital.h
r1256 r1260 20 20 float m_angle; 21 21 mat4 m_modelview, m_proj; 22 mat3 m_normalmat; 22 23 23 24 bool m_ready;
Note: See TracChangeset
for help on using the changeset viewer.