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
H. Verbeet
19d223cade
wined3d: Store multiple constant indices per list entry.
2007-02-28 13:35:34 +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
99576ea24e
wined3d: Implement texbem in arb, improve it in glsl.
2007-02-15 11:36:14 +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
Francois Gouget
536e738552
Assorted spelling fixes.
2007-02-14 21:03:57 +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
H. Verbeet
8f0884066f
wined3d: Add WINED3DDECLUSAGE, use it.
2007-02-14 13:50:22 +01:00
H. Verbeet
2d9540cab7
wined3d: Don't use WINED3DSHADERDECLUSAGE_PSIZE / WINED3DSHADERDECLUSAGE_FOG.
2007-02-14 13:50:01 +01:00
Chris Robinson
5f1a1bbc84
wined3d: Properly round negative values in shader_glsl_mov.
2007-02-12 14:12:29 +01:00
Stefan Dösinger
fa97fbdcad
wined3d: Make shader_cleanup more useful.
2007-02-12 12:37:48 +01:00
H. Verbeet
efed4c33c2
wined3d: gl_FragDepth is a float, so fixup the write mask.
2007-01-19 12:29:11 +01:00
H. Verbeet
955fb95eb6
wined3d: Give shader constants their own debug channel.
2007-01-18 12:09:09 +01:00
H. Verbeet
79c7aeab00
wined3d: Fix a typo.
2007-01-18 12:09:03 +01:00
H. Verbeet
e3cc00cf47
wined3d: Add a glsl_src_param_t type, pass it to shader_glsl_add_src_param() instead of three separate character arrays.
2007-01-16 16:14:21 +01:00
H. Verbeet
04e6250c87
wined3d: Add a glsl_dst_param_t type, pass it to shader_glsl_add_dst_param() instead of three separate character arrays.
2007-01-16 16:13:58 +01:00
H. Verbeet
6f3fae4e04
wined3d: Simplify shader_glsl_get_write_mask().
2007-01-16 16:13:29 +01:00
H. Verbeet
c6bccc9278
wined3d: Simplify shader_glsl_get_swizzle().
2007-01-16 16:13:19 +01:00
H. Verbeet
48f82d3f5e
wined3d: Fix pshader_glsl_tex() and pshader_glsl_texcoord().
2007-01-16 16:13:10 +01:00
H. Verbeet
c3bfef8d7e
wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_callnz().
2007-01-16 16:12:46 +01:00
H. Verbeet
50e0deafca
wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_breakc().
2007-01-16 16:12:37 +01:00
H. Verbeet
f593cd0de8
wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_ifc().
2007-01-16 16:12:26 +01:00
H. Verbeet
a89edf1be9
wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_if().
2007-01-16 16:12:18 +01:00
H. Verbeet
9f22df26ef
wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_rep().
2007-01-16 16:12:11 +01:00
H. Verbeet
2cb49c67db
wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_loop().
...
Fix the comment.
2007-01-16 16:12:02 +01:00
H. Verbeet
cf1a3cc81a
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x3vspec().
...
Use shader_glsl_get_sample_function().
Use the GLSL builtin reflect() function.
2007-01-16 16:11:45 +01:00
H. Verbeet
f0fb61daed
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x3spec().
...
Use shader_glsl_get_sample_function().
2007-01-16 16:11:26 +01:00
H. Verbeet
ba1740909e
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x3().
2007-01-16 16:11:13 +01:00
H. Verbeet
b26fae9a25
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x3tex().
...
Use shader_glsl_get_sample_function().
2007-01-16 16:11:02 +01:00
H. Verbeet
950783d4fd
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x2tex().
2007-01-16 16:10:43 +01:00
H. Verbeet
92ab90eee8
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x3pad().
2007-01-16 16:10:34 +01:00
H. Verbeet
459e0bf633
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x2pad().
2007-01-16 16:10:23 +01:00
H. Verbeet
04144983eb
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texm3x2depth().
2007-01-16 16:10:17 +01:00
H. Verbeet
1947b27380
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texdp3().
2007-01-16 16:10:07 +01:00
H. Verbeet
3cd84d9ab6
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texdp3tex().
2007-01-16 16:10:01 +01:00
H. Verbeet
0fcb682af6
wined3d: Rewrite pshader_glsl_texreg2rgb to properly take the write mask into account.
...
Use shader_glsl_get_sample_function() rather than having the instruction handler figure it out itself.
Get rid of shader_glsl_add_dst_old().
2007-01-16 16:09:50 +01:00
H. Verbeet
67e203215f
wined3d: Split out getting the sample function and coordinate mask from shader_glsl_sample().
2007-01-16 16:09:23 +01:00
H. Verbeet
54137bacfa
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texreg2gb().
2007-01-16 16:09:09 +01:00
H. Verbeet
8325937ded
wined3d: Pass the correct mask to shader_glsl_add_src_param() in pshader_glsl_texreg2ar.
...
Use the correct source swizzle.
2007-01-16 16:08:58 +01:00
H. Verbeet
7d07f31045
wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_dst().
2007-01-16 16:08:35 +01:00
H. Verbeet
146093af33
wined3d: Rewrite shader_glsl_rcp() to properly take the write mask into account.
2007-01-16 16:08:19 +01:00
H. Verbeet
9857158a99
wined3d: Rewrite shader_glsl_expp() to properly take the write mask into account.
2007-01-16 16:08:08 +01:00
H. Verbeet
2c60906ec4
wined3d: Rewrite shader_glsl_cnd() to properly take the write mask into account.
...
Take the difference between ps 1.4 and earlier versions into account.
2007-01-16 16:07:56 +01:00
H. Verbeet
693b6ef876
wined3d: Rewrite shader_glsl_cmp() to properly take the write mask into account.
2007-01-16 16:07:44 +01:00
H. Verbeet
1414d75a3f
wined3d: Rewrite shader_glsl_lrp() to properly take the write mask into account, use the GLSL mix instruction.
2007-01-16 16:07:35 +01:00
H. Verbeet
e0588e7475
wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_lit().
2007-01-16 16:07:15 +01:00
H. Verbeet
cb5c47f8fe
wined3d: Rewrite shader_glsl_mov() to properly take the write mask into account.
...
In case of writing to an address register round the source.
2007-01-16 16:07:05 +01:00
H. Verbeet
9425aef623
wined3d: Rewrite pshader_glsl_dp2add() to properly take the write mask into account.
2007-01-16 16:06:37 +01:00
H. Verbeet
f3a4d35dee
wined3d: Rewrite shader_glsl_dot() to properly take the write mask into account.
2007-01-16 16:06:25 +01:00
H. Verbeet
b3ff0c3703
wined3d: Rewrite shader_glsl_map2gl() to properly take the write mask into account.
2007-01-16 16:06:11 +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
b557a8021a
wined3d: Move WINED3DSIO_SGE & WINED3DSIO_SLT from shader_glsl_map2gl() to shader_glsl_compare() where they belong.
...
Properly take the write mask into account
2007-01-16 16:04:18 +01:00
H. Verbeet
e0f0bf1d08
wined3d: Rewrite shader_glsl_mad() to properly take the write mask into account.
2007-01-16 16:03:59 +01:00
H. Verbeet
b0fd23e844
wined3d: Rewrite shader_glsl_arith() to properly take the write mask into account.
2007-01-16 16:03:50 +01:00
H. Verbeet
4452120007
wined3d: Rewrite shader_glsl_sincos() to properly take the write mask into account.
...
The write mask can only be one of .x, .y, .xy
2007-01-16 16:03:38 +01:00
H. Verbeet
dc0d2a27f1
wined3d: Pass the correct mask to shader_glsl_add_src_param() in shader_glsl_get_register_name().
2007-01-16 16:03:25 +01:00
H. Verbeet
b8bc92dc7b
wined3d: Pass a mask to shader_glsl_add_src_param().
2007-01-16 16:03:15 +01:00
H. Verbeet
1bfc08e081
wined3d: Rename shader_glsl_add_dst() to shader_glsl_add_dst_old(), add shader_glsl_append_dst().
2007-01-16 16:02:41 +01:00
H. Verbeet
b28bd67fd9
wined3d: Fixup the write mask for gl_FogFragCoord and gl_PointSize.
...
gl_FogFragCoord and gl_PointSize are floats rather than vec4s in GLSL,
so they shouldn't have a destination swizzle, and the write mask we
return should consist of only the first component.
2007-01-16 16:02:21 +01:00
H. Verbeet
16cf41413b
wined3d: Return the (binary) write mask from shader_glsl_add_dst_param().
2007-01-16 16:02:13 +01:00
H. Verbeet
9f4f02b5fb
wined3d: Split shader_glsl_add_param() in shader_glsl_add_src_param() and shader_glsl_add_dst_param().
2007-01-16 16:02:06 +01:00
H. Verbeet
aa4d88d6f8
wined3d: Add a comment about D3D write masks and GLSL destination swizzles.
2007-01-16 16:01:55 +01:00
Christoph Bumiller
d905795503
wined3d: Sampler variables wrongly named 'shader'.
2007-01-03 11:01:26 +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
0fae42da50
wined3d: Cleanup shader_glsl_get_input_register_swizzle().
2006-12-29 20:55:51 +01:00
H. Verbeet
2b9a63b5d1
wined3d: Cleanup shader_glsl_get_output_register_swizzle().
2006-12-29 20:55:25 +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
H. Verbeet
c972351051
wined3d: Move set_glsl_shader_program() to glsl_shader.c.
2006-12-28 12:17:49 +01:00
H. Verbeet
e4fc45e0fe
wined3d: Allow wined3d to handle multiple render targets.
2006-12-20 12:32:30 +01:00
Dmitry Timoshkov
47ffd7ae95
wined3d: Make some data const.
2006-12-14 20:11:41 +01:00
H. Verbeet
533dcbf170
wined3d: Use the texture sampling function in a few more instructions (GLSL).
2006-11-28 12:22:32 +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
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
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
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
581c24ef4e
wined3d: Use GL_EXTCALL.
...
That fixes compilation with gl headers that do not know about glUniform4fvARB.
2006-09-26 11:41:53 +02:00
Stefan Dösinger
96bce8d6d4
wined3d: Avoid wasting a uniform.
2006-09-25 18:24:19 +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
49f4c68e29
wined3d: Lookup GLSL float uniform locations only once per program.
2006-08-21 12:16:27 +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
Phil Costin
ef1c8fd118
wined3d: Fix vertex shader corruption issue.
2006-08-14 11:45:33 +02:00
Roderick Colenbrander
31abc2febd
wined3d: Draw buffers support.
2006-08-10 10:54:50 +02:00
Jason Green
2e52b36bb3
wined3d: Declare a 1D sampler for TEXDP3TEX (GLSL).
2006-07-29 11:50:02 +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
Michael Stefaniuc
5ca9f82661
wined3d: Remove superfluous breaks.
2006-07-26 10:24:15 +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
Jason Green
718716b77a
wined3d: Make the number of floating point shader constants dynamic.
2006-07-19 09:54:30 +02:00
Ivan Gyurdiev
436d700c2e
wined3d: Fix cmp instruction for GLSL.
...
The current GLSL cmp instruction is incorrect, because:
- it ignores destination write mask
- it ignores source swizzle
- it ignores other source modifiers.
- it works incorrectly for src0 = 0
2006-07-14 13:32: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
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
c58e06548e
wined3d: Fix typo breaking 3.0 pshaders color input.
2006-07-10 11:48:11 +02:00
Ivan Gyurdiev
5b3c500efe
wined3d: Reverse semantics maps for shaders.
2006-07-07 17:39:26 +02:00
Jason Green
c562c4c771
wined3d: Fix D3DSIO_TEXKILL for GLSL.
2006-07-07 16:57:51 +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
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
e0ccbeb282
wined3d: Bind correct number of samplers for GLSL shaders.
...
We are only checking against GL_MAX_TEXTURES when binding samplers,
when we should be checking against the maximum number of samplers that
the card supports. Spotted by H. Verbeet.
2006-06-21 11:16:07 +02:00
Jason Green
99c855e6ae
wined3d: Fix DEF instructions in GLSL for non-Nvidia platforms.
...
- NVidia allows "const vec4 = {1.0, 2.0, 3.0, 4.0};", even though
that's not part of the spec.
- It should be "const vec4 = vecr4(1.0, 2.0, 3.0, 4.0);"
- This patch fixes this for D3DSIO_DEF and D3DSIO_DEFI.
2006-06-20 11:28:05 +02:00
Jason Green
c13f097de3
wined3d: Correct implementation of D3DSIO_LOOP.
...
I initially misread the specification. src0.x is the iteration count,
not the max amount for the loop register. This fixes that.
2006-06-19 11:11:45 +02:00
Jason Green
9afa540eb5
wined3d: Added correct cast support for gl_FogFragCoord and gl_PointSize output registers.
2006-06-19 11:11:05 +02:00
Jason Green
406ec20459
wined3d: Load boolean and integer constants into the GLSL shader program.
2006-06-19 10:59:58 +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
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
Francois Gouget
11ae0f6386
Assorted spelling fixes.
2006-06-16 11:32:29 +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
14a52e5c09
wined3d: Keep pshader and vshader constants in GLSL separate.
...
GLSL uniforms have as scope the entire program.
To prevent conflicts, name pshader and vshader constants differently.
Based on a patch by Jason Green.
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev
0d08316523
wined3d: Improve Sampler support on 2.0 and 3.0 shaders.
...
- track sampler declarations and store the sampler usage in reg_maps structure
- store a fake sampler usage for 1.X shaders (defined as 2D sampler)
- re-sync glsl TEX implementation with the ARB one (no idea why they diverged..)
- use sampler type in new TEX implementation to support 2D, 3D, and Cube sampling
- change drawprim to bind pixel shader samplers
Additional improvements:
- rename texture limit to texcoord to prevent confusion
- add sampler limit, and use that for samplers - *not* the same as texcoord above
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev
e99926ee06
wined3d: Cast more things.
...
Anything with a swizzle has to be casted to vec4, or it won't work properly.
There's multiple ways to do this, for the moment pick the easiest one.
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev
a1f4dfe4e3
wined3d: Add support for shader model 3.0 I/O registers.
...
SM 3.0 can pack multiple "semantics" into 12 generic input/output registers.
To support that, define temporaries called IN and OUT, and use those as
the output registers. At the end of the vshader, unpack the OUT temps
into the proper GL variables. At the beginning of the pshader, pack the
GL variables back into 12 IN registers.
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev
1a3003338f
wined3d: Trivial cleanups
...
- compiler warnings and errors should be FIXME
- remove obsolete comment, and change variable type.
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev
17b0d26c1e
wined3d: Share trace pass
...
Now that the declaration function is out of the way, the tracing pass,
which is very long and 100% the same can be shared between pixel and
vertex shaders.
The new function is called shader_trace_init(), and is responsible for:
- tracing the shader
- initializing the function length
- setting the shader version [needed very early]
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev
9bae7755ab
wined3d: Rework dcl processing.
...
The new function is called in pass 2 (getister counting/maps), and
it's now in baseshader. It operates on all INPUT and OUTPUT registers,
which, in addition to the old vertex shader input declarations covers
Shader Model 3.0 vshader output and pshader input declarations. The
result is stored into the reg_map structure.
2006-06-13 11:40:21 +02:00
Ivan Gyurdiev
f144d58ac2
wined3d: The namedArrays code path is dead (always FALSE).
...
Delete the entire namedArrays code path and all its dependencies (one
of which is quite long - storeOrder in drawprim is always FALSE, for
example). Delete declaredArrays, and make its code path the default.
2006-06-13 11:40:21 +02:00
Alexandre Julliard
dbfb3739aa
wined3d: Make all the local shader functions static.
2006-06-10 13:22:27 +02:00
Jason Green
42dd4653e3
wined3d: Change fog output variable name for GLSL shaders.
2006-06-10 12:43:10 +02:00
Jason Green
e8c97e9421
wined3d: Fix regression from register maps switch for ARB shaders.
...
I missed a register mask in the move to share the shader_hw_def()
function between pixel and vertex shaders for ARB shaders. Fixed
that, and made the GLSL version use the same mask for consistency.
2006-06-10 12:43:02 +02:00
Jason Green
08295f4cfc
wined3d: GLSL shader cleanup patch.
...
- Based on comments from H. Verbeet
- Changed the distinction from .rgba & .xyzw masks to only use .xyzw
in GLSL shaders. They are interchangeable, and only served to make
the trace look more intuitive, but they don't always apply as-is, so
we'll just leave everything to .xyzw.
- Got rid of the "UseProgramObjectARB(0)" call in drawprim. If there
is no shader set on the next primitive, then that primitive will
call UseProgramObjectARB(0) when it begins to draw.
2006-06-09 21:09:03 +02:00
Jason Green
0c59ca6448
wined3d: Add the bulk of the GLSL string generation functions.
...
- Add a new file glsl_shader.c which contains almost every GLSL specific function we'll need
- Move print_glsl_info() into glsl_shader.c
- Move the shader_reg_maps struct info into the private header, and make it part of SHADER_OPCODE_ARG.
- Create a new shared ps/vs register map for float constants (future patch will make ARB programs use this, too)
2006-06-09 13:47:55 +02:00