"\n"
" vec3 world_pos = co0*a_weights[0] + co1*a_weights[1] + co2*a_weights[2];\n"
" vec3 world_normal = n0*a_weights[0] + n1*a_weights[1] + n2*a_weights[2];\n"
-"\n"
+" \n"
" gl_Position = uPv * vec4( world_pos, 1.0 );\n"
" aColour = a_colour;\n"
" aUv = a_uv;\n"
"out vec4 FragColor;\n"
"\n"
"uniform sampler2D uTexMain;\n"
+"uniform vec3 uCamera;\n"
"\n"
"in vec4 aColour;\n"
"in vec2 aUv;\n"
" return mix( vfrag, vec3(0.55,0.76,1.0), min( 1.0, dist ) );\n"
"}\n"
"\n"
-"#line 12 0 \n"
+"#line 13 0 \n"
"\n"
"void main()\n"
"{\n"
" vec3 vfrag = texture( uTexMain, aUv ).rgb;\n"
"\n"
" // Lighting\n"
-" //vec3 halfview = uCamera - aWorldCo;\n"
-" //float fdist = length( halfview );\n"
-" //halfview /= fdist;\n"
+" vec3 halfview = uCamera - aWorldCo;\n"
+" float fdist = length( halfview );\n"
+" halfview /= fdist;\n"
+"\n"
+" vec3 qnorm = normalize(floor(aNorm*2.0)*0.5) + vec3(0.001,0.0,0.0);\n"
"\n"
-" //vfrag = do_light_diffuse( vfrag, aNorm );\n"
-" //vfrag = do_light_spec( vfrag, aNorm, halfview, 0.1 );\n"
-" //vfrag = do_light_shadowing( vfrag );\n"
-" //vfrag = apply_fog( vfrag, fdist );\n"
+" vfrag = do_light_diffuse( vfrag, qnorm );\n"
+" vfrag = do_light_spec( vfrag, qnorm, halfview, 0.1 );\n"
+" vfrag = do_light_shadowing( vfrag );\n"
+" vfrag = apply_fog( vfrag, fdist );\n"
"\n"
-" FragColor = vec4(vfrag,1.0);\n"
+" float opacity = clamp( fdist, 0.1, 1.0 );\n"
+"\n"
+" FragColor = vec4(vfrag,opacity);\n"
"}\n"
""},
};
static GLuint _uniform_viewchar_uPv;
static GLuint _uniform_viewchar_uTransforms;
static GLuint _uniform_viewchar_uTexMain;
+static GLuint _uniform_viewchar_uCamera;
static GLuint _uniform_viewchar_g_world_depth;
static void shader_viewchar_uPv(m4x4f m){
glUniformMatrix4fv( _uniform_viewchar_uPv, 1, GL_FALSE, (float *)m );
static void shader_viewchar_uTexMain(int i){
glUniform1i( _uniform_viewchar_uTexMain, i );
}
+static void shader_viewchar_uCamera(v3f v){
+ glUniform3fv( _uniform_viewchar_uCamera, 1, v );
+}
static void shader_viewchar_g_world_depth(int i){
glUniform1i( _uniform_viewchar_g_world_depth, i );
}
_uniform_viewchar_uPv = glGetUniformLocation( _shader_viewchar.id, "uPv" );
_uniform_viewchar_uTransforms = glGetUniformLocation( _shader_viewchar.id, "uTransforms" );
_uniform_viewchar_uTexMain = glGetUniformLocation( _shader_viewchar.id, "uTexMain" );
+ _uniform_viewchar_uCamera = glGetUniformLocation( _shader_viewchar.id, "uCamera" );
_uniform_viewchar_g_world_depth = glGetUniformLocation( _shader_viewchar.id, "g_world_depth" );
}
#endif /* SHADER_viewchar_H */