Commit Graph

291 Commits

Author SHA1 Message Date
Henri Verbeet 915b91757f wined3d: Store the destination relative addressing token as a struct wined3d_shader_src_param. 2009-04-20 14:13:08 +02:00
Henri Verbeet 0663eb9323 wined3d: Store the source relative addressing token as a struct wined3d_shader_src_param. 2009-04-20 14:13:00 +02:00
Henri Verbeet d6ee7d59a8 wined3d: Create a relative addressing token for 1.x shaders in the frontend.
Rather than handling this in the backends. Note that the ARB backend always
assumes 1.x shaders.
2009-04-20 14:12:52 +02:00
Henri Verbeet 8ac4c98be2 wined3d: Store the source modifiers in struct wined3d_shader_src_param. 2009-04-15 15:57:35 -05:00
Henri Verbeet b6668b0296 wined3d: Store the register index in struct wined3d_shader_src_param. 2009-04-15 15:57:30 -05:00
Henri Verbeet 4de1dba2c5 wined3d: Store the register type in struct wined3d_shader_src_param. 2009-04-15 15:57:25 -05:00
Henri Verbeet ff62cab537 wined3d: Introduce struct wined3d_shader_src_param. 2009-04-15 15:57:19 -05:00
Henri Verbeet 463de24e7b wined3d: Group instruction context information together in struct wined3d_shader_context. 2009-04-15 15:57:13 -05:00
Henri Verbeet d3fc7dca99 wined3d: Get rid of the "token" field from struct wined3d_shader_dst_param. 2009-04-14 15:25:07 -05:00
Tobias Jakobi 9b067a6ca5 wined3d: Add load_np2fixup_constants function to shader backend. 2009-04-10 14:00:50 +02:00
Henri Verbeet 62d9dc2177 wined3d: Store the relative addressing mode in struct wined3d_shader_dst_param. 2009-04-10 10:23:20 +02:00
Henri Verbeet 22e57d025c wined3d: Store the destination shift in struct wined3d_shader_dst_param. 2009-04-10 10:23:15 +02:00
Henri Verbeet 9ec0b09d35 wined3d: Store usage and usage_idx in struct wined3d_shader_semantic.
Instead of the usage token.
2009-04-08 11:42:19 +02:00
Henri Verbeet d12e489272 wined3d: Store a struct wined3d_shader_dst_param in struct wined3d_shader_semantic. 2009-04-08 11:41:59 +02:00
Henri Verbeet 0f92bbc6bc wined3d: Store the register type in struct wined3d_shader_dst_param. 2009-04-07 14:21:49 +02:00
Henri Verbeet 6f66c1ddbd wined3d: Store the write mask in struct wined3d_shader_dst_param. 2009-04-07 14:21:37 +02:00
Henri Verbeet f0de1622d0 wined3d: Store the destination modifiers in struct wined3d_shader_dst_param. 2009-04-06 12:57:52 +02:00
Henri Verbeet 7b62165546 wined3d: Store the register index in struct wined3d_shader_dst_param. 2009-04-03 13:01:44 +02:00
Henri Verbeet 7245cd2b81 wined3d: Add a struct wined3d_shader_dst_param for storing destination parameter information. 2009-04-03 13:01:38 +02:00
Henri Verbeet 04b2e0b19b wined3d: Remove the opcode field from struct wined3d_shader_instruction. 2009-04-03 13:01:30 +02:00
Henri Verbeet 7bde2792c2 wined3d: Store the source and destination parameter count in struct wined3d_shader_instruction. 2009-04-02 16:28:29 +02:00
Henri Verbeet 44648b2b91 wined3d: Store the instruction handler index in struct wined3d_shader_instruction.
This allows us to avoid comparing against WINED3DSIO_*, which is specific to
the bytecode.
2009-04-02 16:28:29 +02:00
Henri Verbeet c3a01b315e wined3d: Use a more reasonable name for "SHADER_OPCODE_ARG". 2009-04-01 14:24:19 +02:00
Henri Verbeet e44335585e wined3d: Don't use the opcode_token field in the ARB backend. 2009-04-01 14:24:02 +02:00
Henri Verbeet ec43489e10 wined3d: Don't use the opcode_token field in the GLSL backend.
The idea is that we want to prevent backends from parsing the tokens
themselves, which is pretty much a requirement for adding SM4 support.
2009-04-01 14:23:56 +02:00
Henri Verbeet 67da604eca wined3d: Get rid of a few stack buffers. 2009-03-10 12:07:02 +01:00
Stefan Dösinger 5cf764aec2 wined3d: Put the color_correction calls into the instruction handlers.
The color correction cannot be done behind the back of the individual
instruction handlers because it might conflict with the instruction's
color modifications and the D3D provided writemask.
2009-02-27 13:14:23 +01:00
Stefan Dösinger 8dcd51286d WineD3D: Put vertex shader duplication infrastructure in place. 2009-02-11 12:21:25 +01:00
Michael Stefaniuc cc6b283d3a wined3d: Remove some unused defines. 2009-02-03 12:40:12 +01:00
Henri Verbeet 894edc49cc wined3d: Get rid of D3DCREATESHADEROBJECTINSTANCE. 2009-01-12 13:22:02 +01:00
Henri Verbeet 02e4c33611 wined3d: Consistently use .xyzw for vector components. 2008-12-20 11:11:55 +01:00
Stefan Dösinger 61e581abb4 wined3d: Pass the ps_compile_args structures to the shader generation code. 2008-12-19 17:16:39 +01:00
Henri Verbeet d099dde7a9 wined3d: Track shader constants in the shader backend. 2008-12-18 13:17:02 +01:00
Henri Verbeet 73823ef5f6 wined3d: Remove the shader_cleanup() method from the shader backend. 2008-12-17 14:02:24 +01:00
Henri Verbeet f3743fb402 wined3d: Shaders will never have a NULL function. 2008-12-16 12:52:04 +01:00
Henri Verbeet 9011452243 wined3d: Simplify shader_generate_main() a bit. 2008-12-15 14:00:29 +01:00
Henri Verbeet 8553665cb1 wined3d: Move the shader version to reg_maps. 2008-12-15 14:00:26 +01:00
Henri Verbeet dd094fe69d wined3d: Explicitly pass the shader version to some more functions. 2008-12-15 14:00:21 +01:00
Henri Verbeet fb475c7c29 wined3d: Don't reparse the entire shader just to update the sampler types. 2008-12-12 11:40:20 +01:00
Stefan Dösinger 4916cd5478 wined3d: Don't load INT and BOOL constants needlessly. 2008-12-11 14:06:04 +01:00
Henri Verbeet 8124f5e14a wined3d: shader_trace_init() shouldn't have side effects.
This moves setting baseShader.hex_version and baseShader.functionLength to
shader_get_registers_used(), where it's more appropriate.
2008-12-11 12:14:50 +01:00
Henri Verbeet 15d497cb26 wined3d: baseShader.functionLength should be 0 when a NULL pFunction is passed. 2008-12-11 12:14:36 +01:00
Henri Verbeet a2f259afff wined3d: Get rid of the "len" variable in shader_trace_init(). 2008-12-11 12:14:30 +01:00
Henri Verbeet 50a87e23e7 wined3d: Fix the IWineD3DVertexShader and IWineD3DPixelShader IUnknown methods.
IWineD3DVertexShader isn't supposed to implement IWineD3DPixelShader.
2008-12-09 11:27:32 +01:00
Henri Verbeet 4997bee1bf wined3d: Add functions to initialize and free shader buffers. 2008-12-09 11:27:13 +01:00
Henri Verbeet 9887d66dad wined3d: Return early from shader_trace_init() when a NULL pFunction is passed.
This is mainly to reduce the size and indentation level of the if-block.
2008-12-08 12:28:27 +01:00
Henri Verbeet e18629bedd wined3d: Explicitly pass the shader version to shader_skip_unrecognized(). 2008-12-08 12:28:20 +01:00
Henri Verbeet 6e677775ce wined3d: Explicitly pass the shader version to shader_get_param(). 2008-12-08 12:28:17 +01:00
Henri Verbeet 0c954ef743 wined3d: Explicitly pass the shader version to shader_dump_param() and shader_dump_arr_entry(). 2008-12-05 11:59:09 +01:00
Henri Verbeet 71a8a77cf9 wined3d: Explicitly pass the shader version to shader_dump_decl_usage(). 2008-12-05 11:59:06 +01:00
Henri Verbeet a13df0e4ef wined3d: Explicitly pass the version and instruction table to shader_get_opcode(). 2008-12-05 11:59:02 +01:00
Henri Verbeet af1bc3d9ed wined3d: Remove a redundant condition in shader_get_opcode(). 2008-12-05 11:58:58 +01:00
Henri Verbeet 89139b7589 wined3d: Make shader texture format fixups more generic.
Based on a patch by Stefan Dösinger. This is more flexible, and allows
the shader backend implementation to be simpler, since it doesn't have
to know about specific formats. The next patch makes use of this.
2008-12-04 11:59:58 +01:00
Henri Verbeet 0ae60765de wined3d: Make functions static where possible. 2008-12-03 09:47:35 +01:00
Henri Verbeet d8f6e63541 wined3d: Const correctness fixes for arb_program_shader.c. 2008-11-26 12:05:14 +01:00
Stefan Dösinger 0bf32b12f5 wined3d: Add the ability to duplicate GL pixel shaders.
Some stateblock parameters have to be compiled into the GL pixel
shader code, like lines for pixelformat fixups. This leads to problems
when applications switch those settings, requiring a recompilation of
the shader. This patch enables wined3d to have multiple GL shaders for
a D3D shader(pixel shaders only so far) to handle this more
efficiently.
2008-11-25 13:07:03 +01:00
Tobias Jakobi f4e0dec42e wined3d: Fix typo in baseshader.c. 2008-10-28 13:26:01 +01:00
Henri Verbeet 57401fcab2 wined3d: Pass the texture type to the shader depth blt function. 2008-10-28 12:33:18 +01:00
Alexandre Julliard 6cfef95ce7 wined3d: Convert source files to utf-8. 2008-10-18 19:21:20 +02:00
Henri Verbeet 5ba40c3d58 wined3d: Make some more GLSL functions private to the backend. 2008-09-24 12:53:23 +02:00
Henri Verbeet 2e76954097 wined3d: Move part of the shader instruction table to the backend. 2008-09-24 12:53:05 +02:00
Stefan Dösinger bfe7067973 wined3d: Ask the ffp/shader/blit implementation about format support.
If a format is not supported natively by opengl, a shader may be able
to convert it. Up to now, CheckDeviceFormat had magic knowldge which
GL extensions lead to which supported format. This patch adds
functions that allow CheckDeviceFormat to ask the actual
implementation for its capabilities.
2008-08-20 12:26:02 +02:00
H. Verbeet be405c71c0 wined3d: Improve some shader traces.
Make it clear the traced values are hexadecimal.
2008-07-16 17:54:23 +02:00
Andrew Talbot 0064976d54 wined3d: Remove unneeded address-of operators from array names. 2008-07-14 11:50:22 +02:00
Stefan Dösinger e4078fb0ba wined3d: Set ffp caps in the ffp backend, not the shader backend. 2008-07-11 14:32:53 +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
Andrew Talbot 6ced8a3f55 wined3d: Remove unneeded address-of operators from function names. 2008-07-07 12:32:39 +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
Stefan Dösinger b1d8af7926 wined3d: Update copyright lines. 2008-04-02 20:22:42 +02:00
Stefan Dösinger bd68237096 wined3d: Implement TSSARGTEMP with register combiners. 2008-04-02 20:07:40 +02:00
Stefan Dösinger 287f60a2b2 wined3d: Implement D3DTA_TEMP in the GL_ATI_fragment_shader codepath. 2008-04-02 20:07:19 +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 167a271434 wined3d: Support more than one texbem instruction per shader. 2008-03-05 19:22:44 +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
James Hawkins c2a627c6e8 janitorial: Remove links to any microsoft site. 2008-03-01 12:17:07 +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 5426cd6317 wined3d: Clear the constant list before finding constants.
shader_get_registers_used is delayed until compile time for some 1.x
shaders, mostly to wait for the right vertex declaration to be
set. This means that on a recompile it will be run again, adding
another instance of each local constant, which in turn causes compile
errors because of constant redeclaration. Just purging the lists
before finding the constants is a simple and reliable solution.
2008-01-14 15:21:20 +01:00
Stefan Dösinger 09bf3d5aea wined3d: Keep track of shaders. 2008-01-14 15:20:42 +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 3fd0916654 wined3d: Make the code aware of GL_ARB_texture_rectangle. 2007-11-29 13:36:37 +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 7a97d4e2ec wined3d: Free the shader function when freeing the shader. 2007-11-20 13:02:07 +01:00
Stefan Dösinger bd97580683 wined3d: Move IUnknown functions to IWineD3DBaseShader. 2007-11-20 12:53:07 +01:00
Stefan Dösinger edb78187a9 wined3d: Hardcode local constants into the shader if possible. 2007-11-14 11:51:26 +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 1b23dd1ba1 wined3d: Implement the varying map. 2007-11-07 12:08:32 +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 9c6cdda147 wined3d: Reverse the position fixup if the pshader is reading vpos. 2007-10-03 11:02:48 +02:00
Stefan Dösinger c5eb531249 wined3d: Bem is an instruction and uses registers. 2007-10-01 13:00:25 +02:00
Stefan Dösinger daf2290ea4 wined3d: Implement the nrm instruction in arb. 2007-09-27 11:57:29 +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 5ab9d85c39 wined3d: Implement texbeml. 2007-09-12 12:10:03 +02:00
H. Verbeet 89245248c7 wined3d: Handle the ps_3_0 vPos field. 2007-05-04 13:41:54 +02:00
Fabian Bieler c4bbed4854 wined3d: Mark vertex shader 3.0 as foggy shaders if they write out the fog coord. 2007-04-13 12:58:12 +02:00
Felix Nawothnig 18c9e5d5d0 wined3d: Use GL_TEXTURE_2D for dummy textures. 2007-03-30 11:25: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
Andrew Talbot 2f5f3825c6 wined3d: Replace inline static with static inline. 2007-03-17 20:04:46 +01:00
Stefan Dösinger 49a49fcfec wined3d: Load one bump mapping environment matrix into pixel shaders if needed. 2007-02-15 11:36:01 +01:00
H. Verbeet 8f0884066f wined3d: Add WINED3DDECLUSAGE, use it. 2007-02-14 13:50:22 +01:00
Stefan Dösinger fa97fbdcad wined3d: Make shader_cleanup more useful. 2007-02-12 12:37:48 +01:00
H. Verbeet a31f2fd9fc wined3d: Use %s in trace. 2007-01-19 12:28:58 +01:00
H. Verbeet cb26d59d26 05/49: wined3d: Only add line numbers for new lines in shader_addline(). 2007-01-16 16:02:28 +01:00
H. Verbeet 845cd590d2 wined3d: Remove dead code in shader_get_registers_used().
As spotted by Christoph Bumiller, these branches are now never
reached. Also, at least in the case of WINED3DSIO_TEXM3x3SPEC and
WINED3DSIO_TEXM3x3VSPEC the old code was not quite correct, since we
can lookup rather than guess the texture type these days.
2006-12-29 20:55:16 +01:00
H. Verbeet 74b85c8b38 wined3d: Create samplers for all 1.x instructions that sample. 2006-12-28 12:18:41 +01:00
Dmitry Timoshkov 47ffd7ae95 wined3d: Make some data const. 2006-12-14 20:11:41 +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
Andrew Talbot 5381dd2cf6 wined3d: Cast-qual warnings fix. 2006-11-27 13:43:00 +01:00
H. Verbeet 8afe27dacd wined3d: Fix GL_ARB_texture_cube_map extension support. 2006-11-20 11:50:14 +01:00
Ivan Gyurdiev ce2e980d1b wined3d: Add shader version/end masks to the WINED3D namespace. 2006-10-13 11:15:45 +02:00
Ivan Gyurdiev b7edf5b008 wined3d: Add D3DSHADER_ADDRMODE masks to the WINED3D namespace. 2006-10-13 11:15:00 +02:00
Ivan Gyurdiev 29aa316d67 wined3d: Add D3DSI and other opcode masks to the WINED3D namespace. 2006-10-13 11:14:47 +02:00
H. Verbeet 94a86c1224 wined3d: Improve shader_dump_decl_usage() TRACEs. 2006-10-10 19:58:39 +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 e8137632c7 wined3d: Move D3DSP DCL-related structures into WINED3D namespace. 2006-10-10 13:37:35 +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
Stefan Dösinger 760456dc7f wined3d: Find the correct sampler type for < 2.0 pshaders. 2006-08-28 11:37:24 +02:00
Jason Green e5fc18a505 wined3d: Skip processing of D3DSIO_PHASE instruction. 2006-07-29 11:50:10 +02:00
Jason Green 2e52b36bb3 wined3d: Declare a 1D sampler for TEXDP3TEX (GLSL). 2006-07-29 11:50:02 +02:00
Christian Costa 2dc451e181 wined3d: Readd missing copyright to shaders files. 2006-07-18 11:10:34 +02:00
Jason Green 6a97f2202e wined3d: Fix for vertex shaders. 2006-07-17 15:05:38 +02:00
Ivan Gyurdiev 33293df143 wined3d: More flow control instructions.
- Implement call, callnz, label, and ret
- Implement support for NOT modifier
2006-07-11 17:14:24 +02:00
Ivan Gyurdiev 6ede56495a wined3d: More flow control instructions
- Implement if, else, endif, rep, endrep, break
- Implement ifc, breakc, using undocumented comparison bits in the instruction token
- Fix bug in main loop processing of codes with no dst token
- Fix bug in GLSL output modifier processing of codes with no dst token
- Fix bug in loop implementation (src1 contains the integer data, src0 is aL)
- Add versioning for all the instructions above, and remove
  GLSL_REQUIRED thing, which is useless and should be removed from all
  opcodes in general.
2006-07-11 17:13:05 +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 5638fac685 wined3d: Trace ABS/ABSNEG modifiers. 2006-07-07 17:40:03 +02:00
Ivan Gyurdiev 5b3c500efe wined3d: Reverse semantics maps for shaders. 2006-07-07 17:39:26 +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 771623692e wined3d: Rework shader mode selection.
- currently half the shader selection code (GLSL vs ARB) is in
fillGLcaps. The parts that check for software shaders are in
GetDeviceCaps. That placement, will work, but is definitely not optimal.
FillGLcaps should detect support - it should not make decision as to
what's used, because that's not what the purpose of the function is.
GetDeviceCaps should report support as it has already been selected.
Instead, select shader mode in its own function, called in the
appropriate places.

- unifying pixel and vertex shaders into a single selection is a
mistake. A software vertex shader can be coupled with a hardware arb or
glsl pixel shader, or no shader at all. Split them back into two and add
a SHADER_NONE variant.

- drawprim is doing support checks for ARB_PROGRAM, and making shader
decisions based on that - that's wrong, support has already been
checked, and decided upon, and shaders can be implemented via software,
ARB_PROGRAm or GLSL, so that support check isn't valid.

- Store the shader selected mode into the shader itself. Different types
of shaders can be combined, so this is an improvement. In fact, storing
the mode into the settings globally is a mistake as well - it should be
done per device, since different cards have different capabilities.
2006-07-06 16:07:37 +02:00
Ivan Gyurdiev 0111e15e1f wined3d: Fix faulty DCL trace. 2006-07-03 12:04:23 +02:00
Ivan Gyurdiev fd896d8652 wined3d: Use shader_get_regtype() in register counting pass. 2006-07-03 12:03:58 +02:00
Jason Green 4fbe97e5e7 wined3d: Fix a few GLSL shader instruction translations.
This fixes the translations for a few instructions in GLSL and allows
Cubemap sampling in pixel shaders < 2.0.  It makes some of the
lighting on textures in Half Life 2 look better, including some of the
water effects.  It's not perfect yet, but much closer now.
2006-06-29 14:41:01 +02:00
Jason Green baf38b3007 wined3d: Implement more GLSL instructions and a little cleanup.
- Implement D3DSIO_DP2ADD, D3DSIO_TEXKILL, D3DSIO_TEXM3X3PAD
- Partially implement D3DSIO_TEXBEM, D3DSIO_TEXM3X3VSPEC (as much as
  they are implemented in ARB_fragment_program at least).
- Stop copying the SHADER_PARSE_STATE struct in each ARB shader
  routine - use a pointer instead.
2006-06-27 11:16:10 +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