From: Elizabeth Figura zfigura@codeweavers.com
Since the goal is to use the constant buffer uninterpreted, this means we need to perform any transformations not performed by the shader *before* uploading the constants. --- dlls/wined3d/glsl_shader.c | 4 ++-- dlls/wined3d/stateblock.c | 4 ++-- dlls/wined3d/wined3d_private.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 67fb41d862a..c7a2f9cd393 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -1571,8 +1571,8 @@ static void shader_glsl_ffp_vertex_light_uniform(const struct wined3d_context_gl GL_EXTCALL(glUniform1f(prog->vs.light_location[light].c_att, constants->const_att)); GL_EXTCALL(glUniform1f(prog->vs.light_location[light].l_att, constants->linear_att)); GL_EXTCALL(glUniform1f(prog->vs.light_location[light].q_att, constants->quad_att)); - GL_EXTCALL(glUniform1f(prog->vs.light_location[light].cos_htheta, cosf(constants->theta / 2.0f))); - GL_EXTCALL(glUniform1f(prog->vs.light_location[light].cos_hphi, cosf(constants->phi / 2.0f))); + GL_EXTCALL(glUniform1f(prog->vs.light_location[light].cos_htheta, constants->cos_half_theta)); + GL_EXTCALL(glUniform1f(prog->vs.light_location[light].cos_hphi, constants->cos_half_phi)); break;
case WINED3D_LIGHT_DIRECTIONAL: diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index f92ab4b4961..fbe9d94e813 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -701,8 +701,8 @@ static HRESULT wined3d_light_state_set_light(struct wined3d_light_state *state, constants->const_att = params->attenuation0; constants->linear_att = params->attenuation1; constants->quad_att = params->attenuation2; - constants->theta = params->theta; - constants->phi = params->phi; + constants->cos_half_theta = cosf(params->theta / 2.0f); + constants->cos_half_phi = cosf(params->phi / 2.0f);
switch (params->type) { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 9580406ce3a..256dbc75f22 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -2068,7 +2068,7 @@ struct wined3d_light_constants { struct wined3d_color diffuse, specular, ambient; struct wined3d_vec4 position, direction; - float range, falloff, theta, phi; + float range, falloff, cos_half_theta, cos_half_phi; float const_att, linear_att, quad_att; };