Fix illumination
This commit is contained in:
@@ -16,9 +16,9 @@ const char * vs =
|
|||||||
"void main()"
|
"void main()"
|
||||||
"{"
|
"{"
|
||||||
" index=idx;"
|
" index=idx;"
|
||||||
|
" Normal = mat3(transpose(inverse(rot*mdl))) * aNormal;"
|
||||||
" gl_Position = fix * rot * mdl * vec4( aPos, 1.0 );\n"
|
" gl_Position = fix * rot * mdl * vec4( aPos, 1.0 );\n"
|
||||||
"Normal = aNormal;"
|
" FragPos = vec3( rot * mdl * vec4(aPos, 1.0));"
|
||||||
"FragPos = vec3( rot * vec4(aPos, 1.0));"
|
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
|
|
||||||
@@ -35,16 +35,16 @@ const char * fs =
|
|||||||
|
|
||||||
"void main()"
|
"void main()"
|
||||||
"{"
|
"{"
|
||||||
|
|
||||||
|
" vec4 color = texture( palette, vec3( 0, 0, index ) ).rgba;"
|
||||||
" vec3 lightColor = vec3(1,1,1);"
|
" vec3 lightColor = vec3(1,1,1);"
|
||||||
" vec3 lightPos = vec3(10,10,10);"
|
" vec3 lightPos = vec3(0,000,-15);"
|
||||||
|
" vec3 lightDir = normalize(lightPos - FragPos);"
|
||||||
" vec3 norm = normalize(Normal);"
|
" vec3 norm = normalize(Normal);"
|
||||||
|
|
||||||
" vec3 lightDir = normalize(lightPos - FragPos);"
|
|
||||||
|
|
||||||
" float diffuse = max(dot(norm, lightDir), 0.0);"
|
" float diffuse = max(dot(norm, lightDir), 0.0);"
|
||||||
" float ambient = 0.1;"
|
" float ambient = 0.5;"
|
||||||
|
" FragColor = vec4((ambient + diffuse)*lightColor,1.0)*color;"
|
||||||
" FragColor = vec4((ambient + diffuse)*lightColor,1.0)* texture( palette, vec3( 0, 0, index ) ).rgba;"
|
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
19
src/main.c
19
src/main.c
@@ -18,13 +18,13 @@ unsigned char palette[] =
|
|||||||
|
|
||||||
void calc_normal(float* v1, float* v2, float* v3, float* normal)
|
void calc_normal(float* v1, float* v2, float* v3, float* normal)
|
||||||
{
|
{
|
||||||
vec3 lado1, lado2;
|
vec3 lado1, lado2;
|
||||||
|
|
||||||
glm_vec3_sub(v2, v1, lado1);
|
glm_vec3_sub(v2, v1, lado1);
|
||||||
glm_vec3_sub(v3, v1, lado2);
|
glm_vec3_sub(v3, v1, lado2);
|
||||||
|
|
||||||
glm_vec3_cross(lado1, lado2, normal);
|
glm_vec3_cross(lado1, lado2, normal);
|
||||||
glm_vec3_normalize(normal);
|
glm_vec3_normalize(normal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fill_normal( float * d, float * n )
|
void fill_normal( float * d, float * n )
|
||||||
@@ -35,11 +35,9 @@ void fill_normal( float * d, float * n )
|
|||||||
|
|
||||||
vec3 norm_vec;
|
vec3 norm_vec;
|
||||||
calc_normal((d+1)+i, (d+1)+i+3, (d+1)+i+6, norm_vec);
|
calc_normal((d+1)+i, (d+1)+i+3, (d+1)+i+6, norm_vec);
|
||||||
glm_vec3_copy( norm_vec, (n+1)+i );
|
glm_vec3_copy( norm_vec, (n+1)+i );
|
||||||
glm_vec3_copy( norm_vec, (n+1)+i+3 );
|
glm_vec3_copy( norm_vec, (n+1)+i+3 );
|
||||||
glm_vec3_copy( norm_vec, (n+1)+i+6 );
|
glm_vec3_copy( norm_vec, (n+1)+i+6 );
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,7 +66,6 @@ int main( void )
|
|||||||
gload_program( shader, fs, FRAGMENT );
|
gload_program( shader, fs, FRAGMENT );
|
||||||
use_shader( shader );
|
use_shader( shader );
|
||||||
|
|
||||||
|
|
||||||
load_fix_matrix( shader, (float)WIDTH/HEIGHT );
|
load_fix_matrix( shader, (float)WIDTH/HEIGHT );
|
||||||
|
|
||||||
if( !( m_cube = create_mesh( d_cube ) ) )
|
if( !( m_cube = create_mesh( d_cube ) ) )
|
||||||
|
|||||||
Reference in New Issue
Block a user