X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=gl_shaders%2Fmorphing.v.glsl;h=d84336f6e08ffecdcd009107cdff9d27ea400c09;hb=22347bb45e427ea763295d77da0de0d2ef9c2395;hp=cbb3d9e8c5e9f77adcc53d756392a9efbdf5687b;hpb=f4ba93a902613f2b2c4a397d5a526fb4a4161e86;p=demo diff --git a/gl_shaders/morphing.v.glsl b/gl_shaders/morphing.v.glsl index cbb3d9e..d84336f 100644 --- a/gl_shaders/morphing.v.glsl +++ b/gl_shaders/morphing.v.glsl @@ -2,13 +2,18 @@ uniform mat4 mview; uniform mat4 mmviewproj; +uniform mat4 mmod; + +uniform float t; +const float half_height = 0.855; varying vec3 pos; -varying vec3 normal; -varying vec3 ldir; +// varying vec3 normal; +// varying vec3 ldir; varying vec2 tex_coord; +varying vec3 world_normal; -const vec3 lpos = vec3(-10.0, 100.0, 10.0); +// const vec3 lpos = vec3(0.0, 100.0, -10.0); /* attributes */ layout(location = 1) in vec3 attr_pos; @@ -17,12 +22,22 @@ layout(location = 3) in vec2 attr_tex; void main() { - gl_Position = mmviewproj * vec4(attr_pos, 1.0); + vec3 sph_pos = normalize(vec3(attr_pos.x, attr_pos.y - half_height, attr_pos.z)); + + vec3 sph_normal = sph_pos; + sph_pos.y += half_height; + + vec3 p = mix(attr_pos, sph_pos, t); + vec3 n = mix(attr_normal, sph_normal, t); + + gl_Position = mmviewproj * vec4(p, 1.0); + + pos = (mview * vec4(p, 1.0)).xyz; + // ldir = (mview * vec4(lpos, 1.0)).xyz; - pos = (mview * vec4(attr_pos, 1.0)).xyz; - ldir = (mview * vec4(lpos, 1.0)).xyz; + // mat3 normal_matrix = mat3(mview); + // normal = normal_matrix * n; - mat3 normal_matrix = mat3(mview); - normal = normal_matrix * attr_normal; tex_coord = attr_tex; + world_normal = (mmod * vec4(attr_normal, 1.0)).xyz; } \ No newline at end of file