Shader generator should use float3 for normals, not float4
This commit is contained in:
parent
4856804938
commit
67a289fe4a
|
|
@ -1014,6 +1014,8 @@ update_shader_vertex_arrays(ShaderContext *prev, bool force) {
|
|||
name = name->append(texname->get_basename());
|
||||
}
|
||||
}
|
||||
const GLint p = _glsl_parameter_map[_shader->_var_spec[i]._id._seqno];
|
||||
|
||||
if (_glgsg->_data_reader->get_array_info(name,
|
||||
array_reader, num_values, numeric_type,
|
||||
start, stride)) {
|
||||
|
|
@ -1022,7 +1024,6 @@ update_shader_vertex_arrays(ShaderContext *prev, bool force) {
|
|||
return false;
|
||||
}
|
||||
|
||||
const GLint p = _glsl_parameter_map[_shader->_var_spec[i]._id._seqno];
|
||||
_glgsg->_glEnableVertexAttribArray(p);
|
||||
|
||||
if (numeric_type == GeomEnums::NT_packed_dabc) {
|
||||
|
|
|
|||
|
|
@ -718,7 +718,7 @@ synthesize_shader(const RenderState *rs) {
|
|||
text << "\t out float4 l_eye_normal : " << eye_normal_freg << ",\n";
|
||||
}
|
||||
if (_map_index_height >= 0 || _need_world_normal || _need_eye_normal) {
|
||||
text << "\t in float4 vtx_normal : NORMAL,\n";
|
||||
text << "\t in float3 vtx_normal : NORMAL,\n";
|
||||
}
|
||||
if (_map_index_height >= 0) {
|
||||
text << "\t uniform float4 mspos_view,\n";
|
||||
|
|
@ -763,13 +763,13 @@ synthesize_shader(const RenderState *rs) {
|
|||
text << "\t l_world_position = mul(trans_model_to_world, vtx_position);\n";
|
||||
}
|
||||
if (_need_world_normal) {
|
||||
text << "\t l_world_normal = mul(trans_model_to_world, vtx_normal);\n";
|
||||
text << "\t l_world_normal = mul(trans_model_to_world, float4(vtx_normal, 0));\n";
|
||||
}
|
||||
if (_need_eye_position) {
|
||||
text << "\t l_eye_position = mul(trans_model_to_view, vtx_position);\n";
|
||||
}
|
||||
if (_need_eye_normal) {
|
||||
text << "\t l_eye_normal.xyz = mul((float3x3)tpose_view_to_model, vtx_normal.xyz);\n";
|
||||
text << "\t l_eye_normal.xyz = mul((float3x3)tpose_view_to_model, vtx_normal);\n";
|
||||
text << "\t l_eye_normal.w = 0;\n";
|
||||
}
|
||||
pmap<const InternalName *, char *>::const_iterator it;
|
||||
|
|
@ -804,7 +804,7 @@ synthesize_shader(const RenderState *rs) {
|
|||
text << "\t float3 eyedir = mspos_view.xyz - vtx_position.xyz;\n";
|
||||
text << "\t l_eyevec.x = dot(vtx_" << tangent_input << ".xyz, eyedir);\n";
|
||||
text << "\t l_eyevec.y = dot(vtx_" << binormal_input << ".xyz, eyedir);\n";
|
||||
text << "\t l_eyevec.z = dot(vtx_normal.xyz, eyedir);\n";
|
||||
text << "\t l_eyevec.z = dot(vtx_normal, eyedir);\n";
|
||||
text << "\t l_eyevec = normalize(l_eyevec);\n";
|
||||
}
|
||||
text << "}\n\n";
|
||||
|
|
|
|||
Loading…
Reference in New Issue