Commit Graph

287 Commits

Author SHA1 Message Date
Francois Gouget 756b401f8d wined3d: Add a trailing '\n' to a couple of shader_addline() calls. 2008-06-26 21:08:35 +02:00
H. Verbeet a6fa6a4a31 wined3d: Use gl_Color and gl_SecondaryColor to support more varyings in SM3.0 shaders.
SM3.0 requires 10 4 component float varyings for passing stuff between
vertex and pixel shaders. GF7 and earlier report 8 generic varyings +
gl_Color and gl_SecondaryColor in GLSL. This patch allows us to use
gl_Color and gl_SecondaryColor to get 2 extra varyings, which some
games, like C&C3 with highest gfx settings, require.
2008-06-19 11:47:52 +02:00
Stefan Dösinger cd7825c893 wined3d: Hardcode local constants with glUniform4fvARB. 2008-06-03 11:13:59 +02:00
Stefan Dösinger e4413f2012 wined3d: Give local constants a shader type prefix. 2008-06-03 11:13:09 +02:00
Stefan Dösinger 9b25935757 wined3d: Fix DP2ADD in GLSL.
DP2ADD returns a scalar, and fglrx (correctly) complains that it can't
assign that to a 3 component vector.
2008-04-24 22:09:47 +02:00
Stefan Dösinger bcb0f7cc22 wined3d: More fglrx spam. 2008-04-24 22:09:21 +02:00
Stefan Dösinger e3bd5b6dcd wined3d: Use the shader backend to enable / disable atifs and nvts.
The previous logic assumed that if NVTS or ATIFS are available they
will be used. This happens to be true for NVTS, but ATIFS is only used
if neither ARBFP nor GLSL are supported. This breaks fixed function
fragment processing on ATI r300 and newer cards
2008-04-24 11:37:17 +02:00
Austin English c531e2abdb Spelling fixes. 2008-04-23 12:31:07 +02:00
Austin English 6e59cd2c34 Spelling fixes. 2008-04-22 12:20:12 +02:00
Stefan Dösinger b1d8af7926 wined3d: Update copyright lines. 2008-04-02 20:22:42 +02:00
Stefan Dösinger a440051016 wined3d: Add a shader DLL init callback. 2008-03-25 19:49:17 +01:00
Stefan Dösinger ac57b4e2f5 wined3d: Free shader private data on reset.
Since the shader backend implementations might track opengl resources in
their private data inform them about reset calls. For example, the atifs
backend keeps track of the replacement shaders, which are lost during an
opengl context recreation.
2008-03-25 19:48:14 +01:00
Stefan Dösinger ee7e149998 wined3d: Move shader caps setting into the arb and glsl shader backends. 2008-03-25 19:39:23 +01:00
Stefan Dösinger 5ab5202e0f wined3d: Set shader specific caps in the shader backend.
The whole control structures in directx.c get terribly confusing with
the various codepaths for texturing and different shader
implementations. It is also hard to reflect the shader model
decisions this way too. This patch moves the shader specific parts of
the caps code into the shader backend where we can set our caps
dependent of the shader model decisions and without complex caps flag
checks.
2008-03-25 19:39:11 +01:00
Stefan Dösinger 6d5f562dcf wined3d: Move the shader backend selection into a separate function. 2008-03-25 19:36:13 +01:00
Stefan Dösinger a66fb40d83 wined3d: Move shader generation into the shader backend.
Generating the shader ID and parts of the shader prolog and epilog was
done by the common vertexshader.c / pixelshader.c, which is ugly.

This patch doesn't get rid of all the uglyness, somewhen we'll still
have to sort out the relationship of [arb|glsl]_generate_shader and
[arb|glsl]_generate_declarations.
2008-03-25 19:35:58 +01:00
Stefan Dösinger 84258723f9 wined3d: Make the state table a property of the shader backend. 2008-03-25 19:35:32 +01:00
Francois Gouget 304b415284 Assorted spelling fixes. 2008-03-19 11:21:27 +01:00
Stefan Dösinger 8a3ef776f4 wined3d: gl_FragCoord isn't exact. 2008-03-07 11:01:07 +01:00
Stefan Dösinger 167a271434 wined3d: Support more than one texbem instruction per shader. 2008-03-05 19:22:44 +01:00
Stefan Dösinger aeb0e43e3e wined3d: Hardcode local constants in ARB shaders if possible. 2008-03-04 12:15:26 +01:00
Stefan Dösinger 107e80a79c wined3d: Implement a different constant dirtification algorithm.
Add a new property of the shader backend which indicates whether the
shader backend is able to dirtify single constants rather than
dirtifying vshader and pshader constants as a whole. Depending on this
a different Set*ConstantF implementation is used which marks constants
dirty. The ARB shader backend uses this and marks constants clean
after uploading.
2008-03-04 12:15:16 +01:00
Stefan Dösinger f912f18b13 wined3d: Move shader model private data into its own structure. 2008-02-26 11:31:39 +01:00
Stefan Dösinger b1e1df5117 wined3d: Extend out anti-spam database a bit. 2008-02-18 13:34:01 +01:00
Stefan Dösinger 81de2fa10a wined3d: Add a test for the vFace register. 2008-02-15 09:40:03 +01:00
Stefan Dösinger 3d2aa7afa0 wined3d: De-Statify depth blit opengl resources. 2008-02-05 12:33:15 +01:00
Stefan Dösinger 4d0a609452 wined3d: Reset the shader state on shader_*_destroy. 2008-01-14 15:20:51 +01:00
Alexandre Julliard 9636c7fa0e wined3d: Use unsigned int instead of size_t for the glsl mask size. 2008-01-07 17:17:27 +01:00
Stefan Dösinger 88f746ab0e wined3d: Filter out some shader compilation spam. 2007-12-18 14:07:12 +01:00
Stefan Dösinger 8e036d6487 wined3d: Correct a pixel shader version comparison. 2007-12-18 13:23:09 +01:00
Francois Gouget 5f7a9cea38 Assorted spelling fixes. 2007-12-07 16:35:32 +01:00
Stefan Dösinger 54fa712981 wined3d: Initialize output texcoord .w to 1.0 if needed.
The GL_ARB_vertex_program extension does not define a standard value for
output texture coordinates. This makes problems when using vertex
shaders with fixed function fragment processing because fffp divides the
texture coords by its .w component. This means that gl shaders have to
write to the .w component of texture coords. Direct3D shaders however
do not.
2007-12-07 14:54:22 +01:00
Stefan Dösinger 0f39b29da0 wined3d: mov to a0.x does a floor(), not a round to nearest. 2007-12-03 13:43:54 +01:00
Stefan Dösinger 3fd0916654 wined3d: Make the code aware of GL_ARB_texture_rectangle. 2007-11-29 13:36:37 +01:00
Alexandre Julliard 57d1548b51 wined3d: Add printf format checking to the shader_addline function and fix resulting warnings. 2007-11-28 13:40:29 +01:00
Stefan Dösinger c66a3be49b wined3d: Work around nvidia beta driver bug. 2007-11-28 13:40:28 +01:00
Stefan Dösinger afb06a1184 wined3d: Bool constants aren't vectors. 2007-11-21 12:18:09 +01:00
Stefan Dösinger cfc5725760 wined3d: Move glsl shader destruction to the glsl shader backend. 2007-11-21 12:06:27 +01:00
Stefan Dösinger 9f41a359b6 wined3d: Partially revert "Get rid of the conditionals in shader_glsl". 2007-11-14 11:58:22 +01:00
Stefan Dösinger ed7e520926 wined3d: Get rid of a few Nvidiaisms in glsl shaders. 2007-11-14 11:51:38 +01:00
Stefan Dösinger edb78187a9 wined3d: Hardcode local constants into the shader if possible. 2007-11-14 11:51:26 +01:00
Francois Gouget 81a5701ca9 Assorted spelling fixes. 2007-11-09 13:07:12 +01:00
Stefan Dösinger 9fb70b99db wined3d: Load GLSL sampler uniforms at shader link time. 2007-11-09 12:32:11 +01:00
Stefan Dösinger 6fd4f8f699 wined3d: Store integer uniform locations. 2007-11-09 12:32:02 +01:00
Stefan Dösinger bfec6c352d wined3d: Store the special uniforms' locations in the linked program. 2007-11-09 12:31:54 +01:00
Stefan Dösinger 98b291192f wined3d: Get rid of the conditionals in shader_glsl_compare. 2007-11-08 12:17:54 +01:00
Stefan Dösinger 0183f3e305 wined3d: Avoid NOP additions. 2007-11-08 12:03:46 +01:00
Stefan Dösinger 6209b36acb wined3d: mov to a0.x does a floor(), not a round to nearest. 2007-11-08 11:55:31 +01:00
Stefan Dösinger 468309e055 wined3d: Get rid of the conditionals in the glsl lit implementation. 2007-11-08 11:55:08 +01:00
Stefan Dösinger aafcae4752 wined3d: Remove the conditional from texdepth. 2007-11-08 11:54:28 +01:00
Stefan Dösinger 1b23dd1ba1 wined3d: Implement the varying map. 2007-11-07 12:08:32 +01:00
Stefan Dösinger 409103f801 wined3d: Install a varying map. 2007-11-07 12:08:24 +01:00
Stefan Dösinger 3febe738ab wined3d: Handle ps 3.0 varyings in a different way. 2007-11-06 13:34:57 +01:00
Stefan Dösinger 0615c8e454 wined3d: Pixel Shader varying indexing. 2007-11-06 13:34:40 +01:00
Stefan Dösinger 9a9dfc76cb wined3d: Make pixel shader input an array. 2007-11-06 13:34:32 +01:00
Stefan Dösinger 672ed031ce wined3d: Only glBindAttribLocation used attributes. 2007-11-06 13:34:26 +01:00
Stefan Dösinger 8f3accc718 wined3d: Care for the inverted y coords in dsy. 2007-10-22 15:59:04 +02:00
Stefan Dösinger 3f16f02940 wined3d: Nested loop support. 2007-10-04 12:03:59 +02:00
Stefan Dösinger 3c6d97278f wined3d: Implement the vFace register. 2007-10-04 12:03:51 +02:00
Stefan Dösinger 3d3369a77c wined3d: d3d ignores the sign of the input value in the log instruction. 2007-10-03 11:03:12 +02:00
Stefan Dösinger 6dc11616d5 wined3d: Take care against overwriting a source register in cmp. 2007-10-03 11:02:56 +02:00
Stefan Dösinger 9c6cdda147 wined3d: Reverse the position fixup if the pshader is reading vpos. 2007-10-03 11:02:48 +02:00
Francois Gouget b2bc712323 Assorted spelling fixes. 2007-09-27 20:12:53 +02:00
Stefan Dösinger 6313e0ffff wined3d: SRGB write correction emulation. 2007-09-24 13:30:30 +02:00
Stefan Dösinger 2b2c9199e8 wined3d: Unify pixel format correction. 2007-09-24 13:30:21 +02:00
Stefan Dösinger 1c4a15d2cd wined3d: Recompile glsl pixelshaders if the sampler format changes. 2007-09-24 13:30:08 +02:00
Stefan Dösinger 10f25e0104 wined3d: Add signed format conversion for glsl. 2007-09-24 13:29:54 +02:00
Stefan Dösinger d684c9c1a5 wined3d: Fix a typo in shader_glsl_cross. 2007-09-20 15:52:54 +02:00
Stefan Dösinger 02114ac21f wined3d: The D3DSI_COISSUE flag changes the behavior of cnd. 2007-09-14 14:26:26 +02:00
Stefan Dösinger 8273cfdf01 wined3d: Fix texdp3tex in glsl. 2007-09-14 14:26:17 +02:00
Stefan Dösinger 7248354067 wined3d: Pixel shader 1.x constants are clamped to [-1;1]. 2007-09-14 14:23:45 +02:00
Stefan Dösinger bc69315f78 wined3d: texm3x3(v)spec normalizes the normal vector. 2007-09-13 11:38:46 +02:00
Stefan Dösinger 5ab9d85c39 wined3d: Implement texbeml. 2007-09-12 12:10:03 +02:00
Stefan Dösinger 422e0ba1cc wined3d: texkill ignores the .w only in ps 1.x. 2007-09-11 13:48:08 +02:00
Stefan Dösinger 8656713366 wined3d: Implement texldb. 2007-09-11 13:47:58 +02:00
Stefan Dösinger a006d2568b wined3d: Fix texdepth instruction. 2007-09-11 13:47:49 +02:00
Stefan Dösinger 33ecb1db1a wined3d: The temp vars are tmp0 and tmp1. 2007-08-31 12:08:57 +02:00
Stefan Dösinger e7cbb340dc wined3d: Remove stateblock::set.*. 2007-08-13 11:36:43 +02:00
H. Verbeet 1c14c180b7 wined3d: Implement dsx & dsy shader instructions. 2007-07-03 12:32:52 +02:00
Stefan Dösinger a1f83aae8e wined3d: rsq and rcp use the .w component if no swizzle is given. 2007-07-03 12:29:34 +02:00
H. Verbeet 973496d5e4 wined3d: Cleanup shader_glsl_load_psamplers(). 2007-07-02 13:36:26 +02:00
H. Verbeet 1d4042cee1 wined3d: Implement texldl. 2007-06-28 11:01:15 +02:00
Michael Stefaniuc 0326da9dd5 wined3d: Remove superfluous casts of void pointers to other pointer types. 2007-06-27 12:53:37 +02:00
H. Verbeet 3ad03206ab wined3d: Rename max_samplers to max_fragment_samplers. 2007-06-26 11:56:57 +02:00
H. Verbeet 2e786e09bb wined3d: Use texture2D to sample in pshader_glsl_texdp3tex(). 2007-06-21 13:10:32 +02:00
H. Verbeet 8311ff32a3 wined3d: Take the texUnitMap into account when loading shader_glsl_load_psamplers(). 2007-06-13 11:23:06 +02:00
Stefan Dösinger a460a2df43 wined3d: Store the gl information in a per adapter structure and initialize it only once. 2007-06-11 13:51:06 +02:00
H. Verbeet c3c5724789 wined3d: WINED3DSIO_POW should use the absolute value of the first source register. 2007-05-11 13:24:15 +02:00
H. Verbeet 89245248c7 wined3d: Handle the ps_3_0 vPos field. 2007-05-04 13:41:54 +02:00
H. Verbeet a79654d339 wined3d: Fix some swizzles on scalars. 2007-04-13 12:56:06 +02:00
Fabian Bieler 0ce39d5869 wined3d: Fix GLSL cnd instruction.
According to MSDN the cnd instruction should translate:
dst = src0 > 0.5 ? src1 : src2;
2007-04-05 10:55:00 +02:00
Fabian Bieler 91df230624 wined3d: Fix GLSL cnd instruction for INF and NAN arguments. 2007-04-04 21:26:30 +02:00
Fabian Bieler 2843b0f929 wined3d: Fix GLSL cmp instruction for INF and NAN arguments. 2007-04-04 21:26:23 +02:00
Fabian Bieler 333de16fb6 wined3d: Implement support for projective textures in ps 2.0 and later. 2007-03-29 21:15:29 +02:00
Stefan Dösinger bee084503b wined3d: Implement bem shader instruction. 2007-03-27 12:30:38 +02:00
Fabian Bieler 97967d3671 wined3d: Fix glsl texbem instruction for projective textures. 2007-03-23 12:31:35 +01:00
Fabian Bieler 4b3ac837aa wined3d: Implemented bump map transform for texbem in GLSL with native signed textures. 2007-03-23 12:31:27 +01:00
Stefan Huehner 4d1d01f266 Mark several functions as static. 2007-03-13 13:35:12 +01:00
H. Verbeet 30ee071eb9 wined3d: Disable vertex shaders when transformed vertices are used. 2007-03-13 11:55:55 +01:00
H. Verbeet 25cd1c4d28 wined3d: gl_FogFragCoord is a scalar. 2007-03-05 12:06:45 +01:00