wined3d: Added more declarations to GLSL.
- Declare more variable names for GLSL programs. - Some of these won't need to be declared eventually, but it doesn't hurt to do it for now. - Correct output name for pixel shaders (gl_FragColor instead of glFragColor).
This commit is contained in:
parent
ca70d13af4
commit
806aaa1287
|
@ -575,23 +575,38 @@ void generate_glsl_declarations(
|
||||||
/* Declare the constants (aka uniforms) */
|
/* Declare the constants (aka uniforms) */
|
||||||
shader_addline(buffer, "uniform vec4 C[%u];\n", This->baseShader.limits.constant_float);
|
shader_addline(buffer, "uniform vec4 C[%u];\n", This->baseShader.limits.constant_float);
|
||||||
|
|
||||||
|
/* Declare texture samplers
|
||||||
|
* TODO: Make this work for textures other than 2D */
|
||||||
|
for (i = 0; i < This->baseShader.limits.texture; i++) {
|
||||||
|
shader_addline(buffer, "uniform sampler2D mytex%lu;\n", i);
|
||||||
|
}
|
||||||
|
|
||||||
/* Declare address variables */
|
/* Declare address variables */
|
||||||
for (i = 0; i < This->baseShader.limits.address; i++) {
|
for (i = 0; i < This->baseShader.limits.address; i++) {
|
||||||
if (reg_maps->address & (1 << i))
|
if (reg_maps->address & (1 << i))
|
||||||
shader_addline(buffer, "ivec4 A%ld;\n", i);
|
shader_addline(buffer, "ivec4 A%ld;\n", i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Declare texture temporaries */
|
||||||
|
for (i = 0; i < This->baseShader.limits.texture; i++) {
|
||||||
|
shader_addline(buffer, "vec4 T%lu = gl_TexCoord[%lu];\n", i, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Declare temporary variables */
|
||||||
|
for(i = 0; i < This->baseShader.limits.temporary; i++) {
|
||||||
|
if (reg_maps->temporary & (1 << i))
|
||||||
|
shader_addline(buffer, "vec4 R%lu;\n", i);
|
||||||
|
}
|
||||||
|
|
||||||
/* Declare all named attributes (TODO: Add this to the reg_maps
|
/* Declare all named attributes (TODO: Add this to the reg_maps
|
||||||
* and only declare those that are needed) */
|
* and only declare those that are needed) */
|
||||||
for (i = 0; i < This->baseShader.limits.attributes; i++) {
|
for (i = 0; i < This->baseShader.limits.attributes; i++) {
|
||||||
shader_addline(buffer, "attribute vec4 attrib%i;\n", i);
|
shader_addline(buffer, "attribute vec4 attrib%i;\n", i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Declare temporary variables */
|
/* Temporary variables for matrix operations */
|
||||||
for(i = 0; i < This->baseShader.limits.temporary; i++) {
|
shader_addline(buffer, "vec4 tmp0;\n");
|
||||||
if (reg_maps->temporary & (1 << i))
|
shader_addline(buffer, "vec4 tmp1;\n");
|
||||||
shader_addline(buffer, "vec4 R%lu;\n", i);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Start the main program */
|
/* Start the main program */
|
||||||
shader_addline(buffer, "void main() {\n");
|
shader_addline(buffer, "void main() {\n");
|
||||||
|
|
|
@ -1290,7 +1290,7 @@ inline static VOID IWineD3DPixelShaderImpl_GenerateShader(
|
||||||
|
|
||||||
/* Pixel shaders < 2.0 place the resulting color in R0 implicitly */
|
/* Pixel shaders < 2.0 place the resulting color in R0 implicitly */
|
||||||
if (This->baseShader.hex_version < D3DPS_VERSION(2,0))
|
if (This->baseShader.hex_version < D3DPS_VERSION(2,0))
|
||||||
shader_addline(&buffer, "glFragColor = R0;\n");
|
shader_addline(&buffer, "gl_FragColor = R0;\n");
|
||||||
shader_addline(&buffer, "}\n\0");
|
shader_addline(&buffer, "}\n\0");
|
||||||
|
|
||||||
TRACE("Compiling shader object %u\n", shader_obj);
|
TRACE("Compiling shader object %u\n", shader_obj);
|
||||||
|
|
Loading…
Reference in New Issue