Commit Graph

283 Commits

Author SHA1 Message Date
Stefan Dösinger a7d5b1e9a5 wined3d: Move the pshader fog update to the vertex pipeline. 2008-08-05 14:09:36 +02:00
Stefan Dösinger 016efe7d94 wined3d: Clamp results in the arbfp pipeline replacement.
Fixed function processing can only deal with values between 0 and 1
generally. Clamp the results of instructions that could produce bigger
or smaller values.
2008-08-04 13:07:53 +02:00
Francois Gouget a793888a28 Assorted spelling fixes. 2008-08-04 13:04:48 +02:00
Stefan Dösinger 14b24058d6 wined3d: GL_ARB_fragment_program ffp implementation. 2008-07-31 13:02:04 +02:00
Stefan Dösinger 5a6b4e9f47 wined3d: Make the MAC ARBvp implementation happy about ARL. 2008-07-24 11:56:52 +02:00
Stefan Dösinger 726d9d47af wined3d: ATI2N support using GL_EXT_texture_compression_rgtc. 2008-07-24 11:56:42 +02:00
Stefan Dösinger dc25a86cc5 wined3d: Support ATI's D3DFMT_ATI2N format.
This is an ATI specific format designed for compressed normal maps,
and quite a few games check for its existence. While it is an
ATI-specific "extension" in d3d9, it is a core part of
D3D10(DXGI_FORMAT_BC5), and supported on Geforce 8 cards.
2008-07-24 11:56:24 +02:00
Stefan Dösinger c48195e417 wined3d: Move shader_fragment_enable to the fragment pipeline implementation.
It isn't related to the shader backend any longer. The nvts_enable in
the ffp code isn't quite right as well, it should be moved away once
there is a dedicated nvts fragment pipeline replacement
2008-07-11 14:32:37 +02:00
H. Verbeet b37cc08721 wined3d: Don't call shader_select() in depth_blt().
Calling shader_select() from inside depth_blt() isn't necessarily
safe. shader_select() assumes CompileShader() has been called for the
current shaders, but that depends on STATE_VSHADER / STATE_PIXELSHADER
being applied. That isn't always true when depth_blt() gets called,
with the result that sometimes GLSL programs could be created with no
shader objects attached.
2008-07-10 20:33:29 +02:00
H. Verbeet 54ae3ebfd4 wined3d: Destroy depth_blt resources in the backend's destructor.
No need to expose this in the interface.
2008-07-10 12:17:06 +02:00
Stefan Dösinger 3a2743f25d wined3d: Remove the state table from the shader backend. 2008-07-08 21:08:54 +02:00
Stefan Dösinger 2d7cdc3ec2 wined3d: Remove the DLL load init function. 2008-07-08 21:08:54 +02:00
Stefan Dösinger 9be8f36c2e wined3d: Correct an off-by-one error in constant dirtification.
Constant numbers start at 0, and the loading loop has a for(i; i <
dirtyconsts; i++). This means that the highest dirty constant isn't
loaded correctly. Rather than replacing the < with <=, which would
make it impossible to have no dirty constant, add 1 to the dirty
constant counter.
2008-07-07 12:33:41 +02:00
Andrew Talbot 6ced8a3f55 wined3d: Remove unneeded address-of operators from function names. 2008-07-07 12:32:39 +02:00
Stefan Dösinger 2173fde722 wined3d: Avoid float->string conversion in arb shaders. 2008-06-06 10:28:24 +02:00
Andrew Talbot 0de14c37e5 wined3d: Remove unused variables. 2008-04-30 10:25:47 +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 6e59cd2c34 Spelling fixes. 2008-04-22 12:20:12 +02:00
Francois Gouget 8a18e0e43a Assorted spelling fixes. 2008-04-07 13:36:18 +02:00
Stefan Dösinger 20e63160df wined3d: Initialize some ARB shader output parameters. 2008-04-03 12:01:32 +02:00
Stefan Dösinger b1d8af7926 wined3d: Update copyright lines. 2008-04-02 20:22:42 +02:00
Stefan Dösinger 0f1c2370b1 wined3d: Do not report pixel shaders if not supported. 2008-04-02 20:07:30 +02:00
Stefan Dösinger a440051016 wined3d: Add a shader DLL init callback. 2008-03-25 19:49:17 +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 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
Stefan Dösinger 20e57ea607 wined3d: Mark constants dirty in the EXT_gpu_program_parameters path. 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 739278baf1 wined3d: Add a number to the ARB program shader bumpenvmat matrices. 2008-03-05 19:22:31 +01:00
Stefan Dösinger 8b28ca720e wined3d: Use GL_EXT_gpu_program_parameters if available. 2008-03-04 12:15:32 +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 3d2aa7afa0 wined3d: De-Statify depth blit opengl resources. 2008-02-05 12:33:15 +01:00
Austin English 3471f841a1 wined3d: Spelling fixes. 2008-01-18 12:53:33 +01:00
Stefan Dösinger 1156194881 wined3d: Destroy arb shaders on shader destroy. 2008-01-14 15:21:01 +01:00
Stefan Dösinger 4d0a609452 wined3d: Reset the shader state on shader_*_destroy. 2008-01-14 15:20:51 +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
Gerald Pfeifer 7670393508 wined3d: Rewrite condition in vshader_program_add_param() to actually distinguish between two cases. 2007-11-26 13:58:13 +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 fb0dde7b27 wined3d: Relative addressing offsets are limited to [-64; 63] in arb. 2007-11-08 11:54:43 +01:00
Stefan Dösinger 822030e329 wined3d: Enable the mNxN implementation for pixel shaders. 2007-10-01 13:00:19 +02:00
Stefan Dösinger d4019780b5 wined3d: Implement texbeml in arb shaders. 2007-10-01 13:00:12 +02:00
Stefan Dösinger 1c18112339 wined3d: Add proper input register handling to texreg2ar/gb. 2007-10-01 13:00:05 +02:00
Stefan Dösinger 6644704039 wined3d: Add texreg2rgb support to arb shaders. 2007-10-01 12:59:59 +02:00
Francois Gouget b2bc712323 Assorted spelling fixes. 2007-09-27 20:12:53 +02:00
Stefan Dösinger 20872abc9c wined3d: Add sincos support to arb shaders. 2007-09-27 11:57:41 +02:00
Stefan Dösinger daf2290ea4 wined3d: Implement the nrm instruction in arb. 2007-09-27 11:57:29 +02:00
Stefan Dösinger 1407bdb2cf wined3d: Add dp2add support to arb shaders. 2007-09-27 11:57:20 +02:00
Stefan Dösinger c29112b60a wined3d: Handle modifiers in cmp. 2007-09-27 11:57:05 +02:00
Stefan Dösinger 84fc6ca390 wined3d: Add modifier handling to cnd in arb. 2007-09-25 11:21:05 +02:00
Stefan Dösinger c2c7b1df91 wined3d: Implement WINED3DSI_TEXLD_BIAS in arb. 2007-09-25 11:20:58 +02:00
Stefan Dösinger 9531a10897 wined3d: Add support for some unimplemented instructions to arb shaders. 2007-09-25 11:20:51 +02:00
Stefan Dösinger de534a41a4 wined3d: Improve projected texture handling in arb. 2007-09-25 11:20:42 +02:00
Stefan Dösinger bf9cc30aac wined3d: Put V8U8 back into the UNKNOWN format group. 2007-09-25 11:20:33 +02:00
Stefan Dösinger 316095c7a3 wined3d: A0 needs the .x swizzle. 2007-09-24 13:30:42 +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 02114ac21f wined3d: The D3DSI_COISSUE flag changes the behavior of cnd. 2007-09-14 14:26:26 +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 422e0ba1cc wined3d: texkill ignores the .w only in ps 1.x. 2007-09-11 13:48:08 +02:00
Stefan Dösinger a006d2568b wined3d: Fix texdepth instruction. 2007-09-11 13:47:49 +02:00
Francois Gouget a80903e54b wined3d: '0x' is redundant with the '#' format modifier. 2007-08-10 11:56:20 +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
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 5d00923017 wined3d: Remove some redundant fields from IWineD3DBaseTextureImpl. 2007-05-04 13:41:45 +02:00
Stefan Dösinger bee084503b wined3d: Implement bem shader instruction. 2007-03-27 12:30:38 +02:00
Stefan Dösinger 929116f23c wined3d: Handle input modifiers in texcrd with arb shaders. 2007-03-27 12:30:26 +02:00
Fabian Bieler e617c91f22 wined3d: Fix arb texbem instruction for projective textures. 2007-03-23 12:32:10 +01:00
Fabian Bieler 878e02538e wined3d: Remove fog coordinate clamping in the vertex shader. 2007-03-23 12:30:58 +01:00
Fabian Bieler 7cedd56d24 wined3d: Implement linear fog with pixel shader. 2007-03-23 12:30:23 +01:00
Stefan Dösinger e25a16fda5 wined3d: General signed format correction without native signed formats.
Implement signed d3d formats for D3DFMT_V8U8 and D3DFMT_Q8W8V8U8 if no
suitable opengl signed format is supported.
2007-03-21 22:51:19 +01:00
Stefan Dösinger ede01abee2 wined3d: Support GL_ATI_envmap_bumpmap for D3DFMT_V8U8. 2007-03-21 22:50:41 +01:00
Andrew Talbot 2f5f3825c6 wined3d: Replace inline static with static inline. 2007-03-17 20:04:46 +01:00
Fabian Bieler 8dae597f24 wined3d: Implemented signed texture formats via NV_TEXTURE_SHADER. 2007-03-13 11:51:56 +01:00
Stefan Dösinger ae57138eae wined3d: WINED3DFMT_U8V8 is signed.
Plain OpenGL does not provide any signed pixel formats, so the
unsigned GL_RGB is used for loading perturbation data into pixel
shaders that use texbem. For correct loading, the signedness has to be
considered.
2007-03-06 22:16:12 +01:00
H. Verbeet 19d223cade wined3d: Store multiple constant indices per list entry. 2007-02-28 13:35:34 +01:00
Stefan Dösinger 2f96220b3e 6/10: WineD3D: rsq and rcp instructions may need a default swizzle in arb.
ARB shaders need a swizzle for the RSQ and RCP instructions, while d3d
shaders do not. The DirectX sdk says that the x component is used if
no swizzle is given.
2007-02-15 17:21:27 +01:00
Stefan Dösinger 99576ea24e wined3d: Implement texbem in arb, improve it in glsl. 2007-02-15 11:36:14 +01:00
H. Verbeet efed9aea1f d3d8: Move loading local d3d8 vertex shader constants from wined3d to d3d8. 2007-02-14 13:54:55 +01:00
H. Verbeet 32e5cac2be wined3d: Get rid of the vertexDeclaration field in IWineD3DVertexShaderImpl. 2007-02-14 13:54:29 +01:00
Stefan Dösinger fa97fbdcad wined3d: Make shader_cleanup more useful. 2007-02-12 12:37:48 +01:00
H. Verbeet 32778357f8 wined3d: Use ARB_VERTEX_PROGRAM instead of GL_VERTEX_PROGRAM_ARB with GL_SUPPORT.
Spotted by Marcus Meissner.
2007-01-23 11:26:58 +01:00
H. Verbeet 955fb95eb6 wined3d: Give shader constants their own debug channel. 2007-01-18 12:09:09 +01:00
Stefan Dösinger 799770b992 wined3d: Apply shaders in their state handlers. 2007-01-08 20:56:51 +01:00
Alexandre Julliard d46d7d13ab Revert "wined3d: Simplify the get_write_mask and get_swizzle functions."
This reverts commit a9f658f6a6.
2007-01-02 13:21:47 +01:00
H. Verbeet a9f658f6a6 wined3d: Simplify the get_write_mask and get_swizzle functions. 2006-12-29 20:56:16 +01:00
H. Verbeet c8fc7df8a3 wined3d: Cleanup & merge pshader_get_input_register_swizzle() and vshader_program_add_input_param_swizzle(). 2006-12-29 20:56:01 +01:00
H. Verbeet 572cac4eec wined3d: Cleanup & merge pshader_get_write_mask() and vshader_program_add_output_param_swizzle(). 2006-12-29 20:55:39 +01:00
H. Verbeet a22933e08e wined3d: The default debug channel for arb_program_shader.c & glsl_shader.c already is d3d_shader. 2006-12-28 12:18:09 +01:00
Dmitry Timoshkov 47ffd7ae95 wined3d: Make some data const. 2006-12-14 20:11:41 +01:00
H. Verbeet f035df9ac5 wined3d: Use the texture sampling function in a few more instructions (ARB asm shaders). 2006-11-28 12:22:24 +01:00
H. Verbeet ac651a7058 wined3d: Fix the texm3x3tex instruction to sample properly. 2006-11-28 12:19:48 +01:00
H. Verbeet e7122e9a79 wined3d: Create a separate function for sampling a texture. 2006-11-28 12:19:39 +01:00
H. Verbeet df6f482a69 wined3d: Move some code specific to the different shader backends into the respective source files. 2006-11-28 12:19:19 +01:00
Kovács András eb7b1f4bce wined3d: Fix introduced regression in shader_glsl_mnxn and vshader_hw_mnxn. 2006-10-30 20:37:34 +01:00
Kovács András da6c01bea0 wined3d: Implement D3DSIO_MOVA in ARB backend. 2006-10-27 14:12:58 +02:00
Ivan Gyurdiev ce2e980d1b wined3d: Add shader version/end masks to the WINED3D namespace. 2006-10-13 11:15:45 +02:00
Ivan Gyurdiev 9846602412 wined3d: Add D3DTEXTURETRANSFORMTYPE to the WINED3D namespace. 2006-10-13 11:15:31 +02:00
Ivan Gyurdiev b7edf5b008 wined3d: Add D3DSHADER_ADDRMODE masks to the WINED3D namespace. 2006-10-13 11:15:00 +02:00
Ivan Gyurdiev 837027fcb7 wined3d: D3DTEXTURESTAGESTATETYPE: Consistently use in WINED3D namespace. 2006-10-11 12:18:53 +02:00
Ivan Gyurdiev 82379f22a7 wined3d: Move D3DSP dest modifier related items into the WINED3D namespace. 2006-10-10 13:38:45 +02:00
Ivan Gyurdiev 76b571cb48 wined3d: Move D3DSP source modifier-related items into the WINED3D namespace. 2006-10-10 13:38:36 +02:00
Ivan Gyurdiev 17c9d9588a wined3d: Move D3DSP_REG structures into the WINED3D namespace. 2006-10-10 13:37:49 +02:00
Ivan Gyurdiev 7259b9d8b6 wined3d: Move D3DSPR structure into the WINED3D namespace. 2006-10-10 13:37:12 +02:00
Ivan Gyurdiev 062541c026 wined3d: Move D3DSIO structure into WINED3D namespace. 2006-10-10 13:37:03 +02:00
Ivan Gyurdiev 3dcd3681f3 wined3d: Win64 printf fixes. 2006-10-02 14:38:04 +02:00
Ivan Gyurdiev 42a9262acf wined3d: Read GL info and load constants into the same device. 2006-09-27 19:53:43 +02:00
Ivan Gyurdiev d0032a1a2a wined3d: Move device pointer into the BaseShader class. 2006-09-27 19:44:09 +02:00
Stefan Dösinger 96bce8d6d4 wined3d: Avoid wasting a uniform. 2006-09-25 18:24:19 +02:00
Stefan Dösinger 760456dc7f wined3d: Find the correct sampler type for < 2.0 pshaders. 2006-08-28 11:37:24 +02:00
Stefan Dösinger d4a88724dd wined3d: Load projected textures in fragment shaders. 2006-08-25 11:19:15 +02:00
H. Verbeet 09eb0c40a6 wined3d: Improve float constant loading a bit.
- Use a list to keep track of what constants are set.
- Move TRACEs and checkGLcall calls out of the main constant loading loop.
2006-08-21 12:17:42 +02:00
H. Verbeet 2358fbbb03 wined3d: Fix indices for the float constant map.
Indices for the float constant map should be multiplied by 4 because
we're loading 4 component float vectors, not because the size of a
float is 4.
2006-08-21 12:15:12 +02:00
Jason Green 72bfe131d1 wined3d: More shader fixes / new instructions.
- Replace gl_FragColor with gl_FragData[0] for GLSL pixel shader output.
- Subtract 1 more constant from total GLSL allowed float constants to
  accommodate the PROJECTION matrix row that we reference.
2006-07-28 14:01:16 +02:00
Jason Green 46c4b88ba5 wined3d: Fix some upside-down rendering issues for shaders. 2006-07-27 12:03:25 +02:00
Jason Green 718716b77a wined3d: Make the number of floating point shader constants dynamic. 2006-07-19 09:54:30 +02:00
Christian Costa 2dc451e181 wined3d: Readd missing copyright to shaders files. 2006-07-18 11:10:34 +02:00
Christian Costa 95ac88cc0b wined3d: Fix typo in ARB pixel shader. 2006-07-18 11:10:23 +02:00
Jason Green 6a97f2202e wined3d: Fix for vertex shaders. 2006-07-17 15:05:38 +02:00
Ivan Gyurdiev 8068fc3b9c wined3d: Clamp texcoord output between 0 and 1. 2006-07-11 17:12:04 +02:00
Ivan Gyurdiev e9de563e41 wined3d: Place immediate constants in the same array as global constants.
- move DEF, DEFI, DEFB handling into the register counting pass
- keep track of defined constants as a linked list (because there's a
  few of them)
- apply immediate constants after global constants in the constant
  loading function
- both types of constants now get loaded with array notation in the
  shader (into the same array)
2006-07-11 17:11:30 +02:00
Ivan Gyurdiev 5b3c500efe wined3d: Reverse semantics maps for shaders. 2006-07-07 17:39:26 +02:00
Jason Green 3529e0ceeb wined3d: Fix D3DSIO_M#X# instruction for both ARB and GLSL shaders.
This instruction was being handled incorrectly in the case where the
2nd src argument contained a relatively addressed constant.
2006-07-06 16:31:24 +02:00
Ivan Gyurdiev 276609e1e5 wined3d: Move register count pass to SetFunction.
Move semantics pointers out of the reg_maps, make them persistent data
in the shader (again, for future software shaders).
2006-07-06 16:07:38 +02:00
Ivan Gyurdiev 1bfec25031 wined3d: Resync ARB mnxn function with GLSL mnxn function. 2006-07-03 12:04:09 +02:00
Ivan Gyurdiev d06e13db99 wined3d: Move SHADER_ARB code into arb_program_shader.c. 2006-07-03 12:03:31 +02:00
Jason Green 0b09ecb291 wined3d: Move D3DSIO_DEF instruction for ARB shaders into arb_program_shader.c. 2006-06-20 11:28:15 +02:00
Jason Green 34d271bab6 wined3d: Add preliminary support for constant boolean and integer registers in GLSL.
- Separate the declaration phase of the shader string generator into
  the arb and glsl specific files.
- Add declarations and recognition for application-sent constant
  integers and booleans (locally defined ones will follow).
- Standardize capitilization of pixel/vertex specific variable names.
2006-06-19 10:50:14 +02:00
Jason Green 2d8e05f8a1 wined3d: Move constant loading into target-specific files.
- Moves GLSL constant loading code into glsl_shader.c and out of the
  over-populated drawprim.c.
- Creates a new file named arb_program_shader.c which will hold code
  specific to ARB_vertex_program & ARB_fragment_program.
- Remove the constant loading calls from drawprim.c
2006-06-19 10:49:52 +02:00