rework model VS
parent
7ceab7fe0f
commit
5d0ed47b3a
|
@ -33,7 +33,6 @@ uniform ColorMap map_emissive; uniform sampler2D map_emissive_tex;
|
|||
uniform float skysphere_rotation; /// set:0
|
||||
uniform float skysphere_mip_count;
|
||||
uniform float exposure; /// set:1
|
||||
uniform uint frame_count;
|
||||
uniform float specular_shininess;
|
||||
|
||||
uniform sampler2D tex_skysphere;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
void main() {
|
||||
vec3 objPos = get_object_pos();
|
||||
|
||||
// Set attributes up
|
||||
v_normal_ws = normalize(vec3(att_instanced_matrix * vec4(v_normal, 0.))); // normal to world/model space
|
||||
v_normal = normalize(v_normal);
|
||||
v_position = att_position;
|
||||
|
@ -15,22 +16,31 @@ void main() {
|
|||
mat4 modelView = view * att_instanced_matrix;
|
||||
mat4 l_model = att_instanced_matrix;
|
||||
v_position_ws = (l_model * vec4( objPos, 1.0 )).xyz;
|
||||
|
||||
billboard_t bb = setup_billboard(modelView, l_model);
|
||||
modelView = bb.modelView;
|
||||
l_model = bb.l_model;
|
||||
|
||||
v_position_ws = (l_model * vec4( objPos, 1.0 )).xyz;
|
||||
v_tangent = normalize(mat3(att_instanced_matrix) * att_tangent.xyz);
|
||||
|
||||
vec3 binormal = cross(att_normal, att_tangent.xyz) * att_tangent.w;
|
||||
v_binormal = normalize(mat3(att_instanced_matrix) * binormal);
|
||||
|
||||
// Optional: Billboarding
|
||||
{
|
||||
billboard_t bb = setup_billboard(modelView, l_model);
|
||||
modelView = bb.modelView;
|
||||
l_model = bb.l_model;
|
||||
|
||||
v_position_ws = (l_model * vec4( objPos, 1.0 )).xyz;
|
||||
v_tangent = normalize(mat3(att_instanced_matrix) * att_tangent.xyz);
|
||||
}
|
||||
|
||||
// Compute lighting (vertex-lit models)
|
||||
material_t dummy_mat;
|
||||
v_vertcolor = lighting(dummy_mat);
|
||||
|
||||
// Compute final position and camera vector
|
||||
vec4 finalPos = modelView * vec4( objPos, 1.0 );
|
||||
vec3 to_camera = normalize( -finalPos.xyz );
|
||||
v_to_camera = mat3( inv_view ) * to_camera;
|
||||
material_t dummy_mat;
|
||||
v_vertcolor = lighting(dummy_mat);
|
||||
|
||||
// Set final position
|
||||
gl_Position = P * finalPos;
|
||||
|
||||
// Prepare shadow data for shadow mapping
|
||||
do_shadow();
|
||||
}
|
Loading…
Reference in New Issue