[WINED3D 1/3] Move PARAM C[] program.env[] into baseshader and out
of vertex shaders
Jason Green
jave27 at gmail.com
Thu May 18 12:42:37 CDT 2006
PS has no problem using this PARAM mapping as well, so this just makes
the generated ARB functions more consistent.
-------------- next part --------------
Subject: [PATCH 1/3] Move PARAM C[] = program.env[] into baseshader and out of vertex shader.
This will give us consistency when checking constants/uniforms in the shaders between vertex and pixel shaders.
---
dlls/wined3d/baseshader.c | 5 +++++
dlls/wined3d/pixelshader.c | 2 +-
dlls/wined3d/vertexshader.c | 4 ----
3 files changed, 6 insertions(+), 5 deletions(-)
b0224360cecf47035edb32ba6db97eb52b9082be
diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c
index f9f939f..98fa795 100644
--- a/dlls/wined3d/baseshader.c
+++ b/dlls/wined3d/baseshader.c
@@ -523,6 +523,11 @@ void generate_arb_declarations(IWineD3DB
if (This->baseShader.textures_used & (1 << i))
shader_addline(buffer, "MOV T%lu, fragment.texcoord[%lu];\n", i, i);
}
+
+ /* Need to PARAM the environment parameters (constants) so we can use relative addressing */
+ shader_addline(buffer, "PARAM C[%d] = { program.env[0..%d] };\n",
+ This->baseShader.limits.constant_float,
+ This->baseShader.limits.constant_float - 1);
}
/** Generate the variable & register declarations for the GLSL
diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c
index bafcd28..05241d2 100644
--- a/dlls/wined3d/pixelshader.c
+++ b/dlls/wined3d/pixelshader.c
@@ -764,7 +764,7 @@ inline static void get_register_name(con
if (constants[reg])
sprintf(regstr, "C%lu", reg);
else
- sprintf(regstr, "program.env[%lu]", reg);
+ sprintf(regstr, "C[%lu]", reg);
break;
case D3DSPR_TEXTURE: /* case D3DSPR_ADDR: */
sprintf(regstr,"T%lu", reg);
diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c
index 58a1963..29a92d1 100644
--- a/dlls/wined3d/vertexshader.c
+++ b/dlls/wined3d/vertexshader.c
@@ -1073,10 +1073,6 @@ inline static VOID IWineD3DVertexShaderI
This->baseShader.limits.constant_float =
min(95, This->baseShader.limits.constant_float);
- shader_addline(&buffer, "PARAM C[%d] = { program.env[0..%d] };\n",
- This->baseShader.limits.constant_float,
- This->baseShader.limits.constant_float - 1);
-
/** Call the base shader generation routine to generate most
of the vertex shader string for us */
generate_base_shader( (IWineD3DBaseShader*) This, &buffer, pFunction);
--
1.1.3
More information about the wine-patches
mailing list