188 Commits

Author SHA1 Message Date
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
a006d2568b wined3d: Fix texdepth instruction. 2007-09-11 13:47:49 +02:00
Stefan Dösinger
36aef3dc54 wined3d: Hold an internal reference on pixel and vertex shaders. 2007-08-28 11:55:53 +02:00
H. Verbeet
34f6d4937f wined3d: Fix the shader version on some instruction tokens. 2007-07-23 11:59:08 +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
1d4042cee1 wined3d: Implement texldl. 2007-06-28 11:01:15 +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
4e27a7d81c wined3d: For ps_2_0 and higher, call shader_get_registers_used() in IWineD3DPixelShaderImpl_SetFunction. 2007-06-08 11:57:41 +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
Stefan Dösinger
0d88a38238 wined3d: Dirtify the shader and declaration states if the bound interface is destroyed. 2007-04-12 16:09:12 +02:00
Stefan Dösinger
bee084503b wined3d: Implement bem shader instruction. 2007-03-27 12:30:38 +02:00
Fabian Bieler
7cedd56d24 wined3d: Implement linear fog with pixel shader. 2007-03-23 12:30:23 +01:00
Andrew Talbot
2f5f3825c6 wined3d: Replace inline static with static inline. 2007-03-17 20:04:46 +01:00
H. Verbeet
fc5f36f037 wined3d: Fix IWineD3DPixelShader_GetFunction / IWineD3DVertexShader_GetFunction. 2007-03-08 11:58:50 +01:00
H. Verbeet
2384bdde9d wined3d: Remove broken software shaders. 2007-03-07 11:52:17 +01:00
H. Verbeet
71a0c6e482 wined3d: The texldl instruction takes 3 arguments. 2007-03-05 12:06:40 +01:00
H. Verbeet
2c85e5e8a3 wined3d: Store GLSL programs in a hash table rather than a linked list. 2007-02-28 13:35:23 +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
beed89cde4 wined3d: The sincos instruction is valid for ps/vs 2.1 as well. 2007-01-19 12:29:17 +01:00
H. Verbeet
7252b4d340 wined3d: Give WINED3DSIO_CRS its own function, properly take the write mask into account. 2007-01-16 16:05:49 +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
Andrew Talbot
92dc74016a wined3d: Cast-qual warnings fix. 2006-11-27 13:43:10 +01:00
Francois Gouget
8e1e62616a wined3d: Remove '\0's in traces. 2006-10-16 11:30:53 +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
062541c026 wined3d: Move D3DSIO structure into WINED3D namespace. 2006-10-10 13:37:03 +02:00
Ivan Gyurdiev
e020eceddf wined3d: Make the shader mode selections per device. 2006-10-09 20:27:55 +02:00
H. Verbeet
35bd8d32b1 wined3d: Explicitly enable the GL_ARB_draw_buffers extension in GLSL shaders. 2006-10-02 21:38:18 +02:00
Ivan Gyurdiev
3dcd3681f3 wined3d: Win64 printf fixes. 2006-10-02 14:38:04 +02:00
Ivan Gyurdiev
d0032a1a2a wined3d: Move device pointer into the BaseShader class. 2006-09-27 19:44:09 +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
0b7a96e92b wined3d: Compile pixel shaders in drawprim. 2006-08-25 11:19:08 +02:00
Roderick Colenbrander
c2b6cc9dc4 wined3d: Fix GLSL regression / draw buffers support. 2006-08-09 20:35:59 +02:00
H. Verbeet
ef87a40c72 wined3d: Delay vertex shader compilation until the shader is first used. 2006-08-07 13:12:10 +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
7e90aba97b wined3d: Implement more GLSL instructions.
Implement D3DSIO_TEXREG2AR, TEXREG2GB, TEXREG2RGB, TEXM3X3TEX, TEXM3X3SPEC.
2006-07-25 11:22:55 +02:00
H. Verbeet
8c981140a2 wined3d: Add traces to IWineD3DVertexShaderImpl_SetFunction & IWineD3DPixelShaderImpl_SetFunction. 2006-07-25 11:21:51 +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
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
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
d06e13db99 wined3d: Move SHADER_ARB code into arb_program_shader.c. 2006-07-03 12:03:31 +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
f444009bfb wined3d: Implement locally defined boolean and integer constants in GLSL. 2006-06-19 10:59:13 +02:00
Jason Green
cc06ed3d53 wined3d: Implement more GLSL instructions.
- Implemented: D3DSIO_SGN, LOOP, ENDLOOP, LOGP, LIT, DST, SINCOS
- Process instruction-based modifiers (function existed, it just
  wasn't being called)
- Add loop checking to register maps.
- Renamed "sng" to "sgn" for D3DSIO_SGN - it's not handled anywhere
  except for GLSL, so won't matter.
2006-06-15 12:20:20 +02:00
Ivan Gyurdiev
45dbb78d73 wined3d: Fix params for DP2ADD/TEXLDD.
DP2ADD is valid on pshaders 2.0 and above, has 4 parameters.
TEXLDD is valid on pshaders 2.x and above, has 5 parameters.
2006-06-13 11:40:23 +02:00