Henri Verbeet
d37472f27b
wined3d: Add missing ActivateContext calls to shader_destroy() implementations.
2009-05-29 11:26:32 +02:00
Stefan Dösinger
e70c80add9
wined3d: Emulate if(bool) in ARB shaders.
2009-05-28 12:46:01 +02:00
Stefan Dösinger
e492dd858e
wined3d: Add a function around the handler table.
...
This reduces the number of methods in the shader backend(the instr
modifiers can be handled in that wrapper) and it will help flow
control emulation in the ARB backend.
2009-05-28 12:45:45 +02:00
Stefan Dösinger
aad92c0780
wined3d: Manage vs_compile_args in the backends.
2009-05-28 12:45:32 +02:00
Stefan Dösinger
814dd42f25
wined3d: Manage ps_compiled_shader in the backends.
2009-05-28 12:45:21 +02:00
Stefan Dösinger
8763f6eac5
wined3d: Make find_gl_vshader backend specific.
2009-05-28 12:45:10 +02:00
Stefan Dösinger
732a9a15d5
wined3d: Remove the forward declaration added in the last patch.
2009-05-28 12:44:59 +02:00
Stefan Dösinger
d0d681c81e
wined3d: Make find_gl_pshader backend private.
2009-05-28 12:44:43 +02:00
Stefan Dösinger
5865d9c01b
wined3d: Store the compile args in the compile context, not the shader.
2009-05-28 12:44:22 +02:00
Stefan Dösinger
6492622350
wined3d: sincos for vertex shaders.
...
SCS is unfortunately a fragment program only instruction. If we have the NV
extensions we can use SIN and COS. Otherwise we have to approximate sine and
cosine with a taylor series. Luckily we're provided with the necessary
constants by the application.
2009-05-27 11:56:53 +02:00
Stefan Dösinger
2f3faf4526
wined3d: Put some ARB declarations in the right place.
...
TMP_POS is only used in vertex shaders, declare it in the vshader
specific code. The sRGB constants are only used by pixel shaders, so
move them to the ps specific code, and avoid reading the stateblock.
2009-05-27 11:56:29 +02:00
Stefan Dösinger
f484cbbf91
wined3d: Get rid of Tx hardcoding in texbem.
2009-05-27 11:56:07 +02:00
Stefan Dösinger
da1b8d0c8e
wined3d: Replace a few hardcoded Tx registers with proper name getters.
2009-05-27 11:56:01 +02:00
Stefan Dösinger
7fc4279cb8
wined3d: Implement DSX in ARB.
...
DSY is not that easy because we have to deal with the inverted coordinate
system in onscreen(!) rendering - see GLSL dsy.
2009-05-27 11:55:52 +02:00
Stefan Dösinger
122af07a30
wined3d: Implement SGN in ARB.
2009-05-21 16:17:52 +02:00
Stefan Dösinger
8e45e48b0c
wined3d: Support vec4 A0 with NV_vertex_program2_option.
2009-05-21 16:17:52 +02:00
Stefan Dösinger
d0756ee537
wined3d: Support ABS and ABSNEG with NV extensions if available.
2009-05-21 16:17:52 +02:00
Stefan Dösinger
01ec5068e2
wined3d: Add NV asm extension support to the ARB backend.
2009-05-21 16:17:51 +02:00
Stefan Dösinger
60f20a2f39
wined3d: Support ABS and ABSNEG in ARB.
2009-05-21 16:17:51 +02:00
Stefan Dösinger
7b1d48721d
wined3d: Emulate the 4 component address register in ARB.
2009-05-20 10:55:17 +02:00
Stefan Dösinger
72e9e80f6e
wined3d: Prepare for vec4 address registers in ARB.
2009-05-20 10:55:09 +02:00
Stefan Dösinger
c7ca3793cc
wined3d: Implement mova rounding in arb.
2009-05-20 10:55:03 +02:00
Stefan Dösinger
bffb89101f
wined3d: Fix srgb correction.
2009-05-20 10:54:56 +02:00
Stefan Dösinger
e6cc81d287
wined3d: Get rid of the TMP register in fragment shaders.
...
To be able keep the temporary register in the type independent NRM
instruction, the vertex temporary register is renamed to TA to match
the name of a pixel shader register.
2009-05-20 10:54:50 +02:00
Stefan Dösinger
ba35760f9f
wined3d: Use CMP instead of SLT and SGE in sRGB correction.
...
This shortens the code and reduces the amount of temp regs used by 1.
2009-05-19 15:24:48 +02:00
Stefan Dösinger
ad217029b0
wined3d: Get rid of TMP accesses in texm3x3* instructions.
2009-05-19 15:24:39 +02:00
Stefan Dösinger
ced325f816
wined3d: Get rid of TMP access in texm3x2*.
...
texm3x2pad knows which register the following texm3x2depth or tex instruction
will use, and it knows that this register is uninitialized. So use it for
temporary storage instead of TMP.
2009-05-19 15:24:31 +02:00
Stefan Dösinger
17b001788f
wined3d: Get rid of TMP2 and some easy TMP register uses.
...
We have 5 temporary registers declared for private use. We can get rid of two
of them.
2009-05-19 15:24:21 +02:00
Stefan Dösinger
4bf980962a
wined3d: Only declare TMP_OUT in vertex shaders.
2009-05-19 15:24:13 +02:00
Stefan Dösinger
d7f282f241
WineD3D: Support more constants in ARB shaders.
...
GL_LIMIT - 1 for vertex programs and the GL limit in fragment programs. The
indirect addressing limitation in GLSL applies here as well.
2009-05-18 13:59:31 +02:00
Stefan Dösinger
c7839112c9
wined3d: Avoid declaring helper_const in vertex programs if possible.
2009-05-18 13:59:24 +02:00
Stefan Dösinger
2cb8f42168
wined3d: Support clipplanes with GLSL.
...
This is the Nth attemt to make clipping work with GLSL shaders. The patch now
uses the GLSL quirk table to handle cards that need a custom varying for
gl_ClipPos, and the code is adapted to the changed state table and shader
backend system.
2009-05-18 13:59:16 +02:00
Stefan Dösinger
45563979bd
wined3d: Update the bump constants after a shader change.
...
Since we're using local constants now, we have to update the constants after a
shader change.
2009-05-18 13:58:57 +02:00
Stefan Dösinger
3372846aa6
wined3d: Use local constants for bump parameters.
...
This simplifies the loading code a bit. The constants were never
designed to be at the same location in all shaders, so there's no
point in using program.env. This way we don't collide with the d3d
shader constants and its easier to work together with NP2 fixups and
other shaders.
2009-05-18 13:58:47 +02:00
Stefan Dösinger
6fe1a5daa5
wined3d: Don't use TMP_COLOR unless srgb is enabled.
...
This was needed unconditionally in the past to apply fog, but since we're
using the ARBfp fog defines it is only needed if an sRGB correction is done
at the end of the shader.
2009-05-15 11:45:18 +02:00
Henri Verbeet
b35e469d9d
wined3d: Document functions that depend on the caller to do GL locking.
2009-05-15 10:25:41 +02:00
Stefan Dösinger
0123f81ce5
wined3d: Centralize WINED3DSPDM_SATURATE handling.
...
Besides the cleanup this patch will help to implement D3DSPDM_PARTIALPRECISION
with GL_NV_vertex_program2_option / GL_NV_fragment_program_option.
2009-05-14 14:27:33 +02:00
Stefan Dösinger
aeddd2da63
wined3d: Fix remaining incorrect dst register getters.
2009-05-14 14:27:25 +02:00
Stefan Dösinger
bcb20ae96c
wined3d: Fix a few more hardcoded pixel shader registers.
2009-05-14 14:27:19 +02:00
Stefan Dösinger
2327e316a2
wined3d: Tidy up pshader_hw_texreg2rgb and friends.
2009-05-14 14:27:14 +02:00
Stefan Dösinger
05cc344e7d
wined3d: Tidy up pshader_hw_dp2add.
2009-05-14 14:27:07 +02:00
Stefan Dösinger
ca1a979c69
wined3d: Tidy up pshader_hw_cmp.
2009-05-13 13:22:16 +02:00
Stefan Dösinger
c06aa361e0
wined3d: Tidy up pshader_hw_cnd.
2009-05-13 13:22:11 +02:00
Stefan Dösinger
90526ce761
wined3d: Separate Tx tempregs from Tx varyings in ARB.
...
ps_1_3 uses Tx to pass in texture coordinates, but also as temporary
registers. ps_1_4 and ps_2_0 only use them for texture coordinates. This patch
gets rid of the Tx = fragment.texcoord[x] assign in all shader versions, and
doesn't even declare Tx in ps_1_4 and ps_2_0.
The <=ps_1_3 instructions know which kind of input they expect from the Tx
register, so the instruction handlers now know if they have to read the
tempreg Tx or the varying fragment.texcoord[x].
2009-05-13 13:22:04 +02:00
Stefan Dösinger
fc5e511dda
wined3d: Fix 1.4 pshader projection in ARB.
...
shader_arb_add_src_param handled DW and TXP undid it again. Remove DZ DW from
the modifiers and handle it in the instruction. DZ cannot be handled by TXP as
is, so move the .z component to .w and make it DW-like. Using SZW+TXP is
likely more efficient than the RCP, MUL, TEX we'd get if we let
shader_arb_add_src_param do the job.
2009-05-13 13:21:43 +02:00
Stefan Dösinger
45799fdc4e
wined3d: Tidy up pshader_hw_tex.
...
Fix the indentation and replace the get_register_name with
shader_arb_get_dst_param.
2009-05-13 13:21:29 +02:00
Henri Verbeet
59689262e7
wined3d: Add missing GL locking to shader_backend_t.shader_free_private() implementations.
2009-05-13 12:01:48 +02:00
Henri Verbeet
b5aee04023
wined3d: Add missing GL locking to fragment_pipeline.enable_extension() implementations.
2009-05-13 12:01:43 +02:00
Henri Verbeet
fef4253171
wined3d: Pass a struct wined3d_shader_register to shader_arb_get_register_name().
2009-05-12 11:17:45 +02:00
Stefan Dösinger
601030cfa9
wined3d: Standardize pshader_hw_texkill.
...
Use shader_arb_get_dst_param instead of get_register_name to find the register
name. Even though this adds support for modifiers(which aren't allowed by
native), this shouldn't hurt. If an app passes in an incorrect shader it
should be caught in the frontend.
2009-05-11 12:50:37 +02:00
Stefan Dösinger
5cfbfbc8b3
wined3d: Tidy up shader_hw_rsq_rcp.
2009-05-11 12:50:22 +02:00
Stefan Dösinger
da47f68522
wined3d: Simplify shader_hw_map2gl.
...
Most of the extra work done in the pixel shader code was not needed or
redundant. This patch unifies the two paths.
2009-05-11 12:50:01 +02:00
Stefan Dösinger
7a1f9c84f1
wined3d: Get rid of the strcat in shader_arb_add_dst_param and make it shader_arb_get_dst_param.
2009-05-11 12:49:54 +02:00
Stefan Dösinger
48c2b0d669
wined3d: Merge shader_arb_add_src_param and pshader_gen_input_modifier_line.
...
Mostly based on the code of pshader_gen_input_modifier_line. The space-adding
behavior of shader_arb_add_src_param was removed because the plurality of
instruction handlers passes an uninitialized buffer in and expects a register
name written to its start, and only map2gl and rcp_rsq use the space-adding
stuff. I'll change rcp_rsq in a later patch anyway. I changed the name to
shader_arb_get_src_param to reflect this behavior.
2009-05-11 12:48:35 +02:00
Stefan Dösinger
7a1f305d42
wined3d: Get rid of pshader_gen_output_modifier_line.
...
Use shader_arb_add_instruction_modifiers instead. This avoids calling the
fixup function from each single instruction handler to handle shifts. It does
not yet get rid of the modifier handler in each instruction because we don't
want a separate line if we can just append _SAT to the instruction name.
2009-05-08 12:20:37 +02:00
Stefan Dösinger
f025829449
wined3d: Pass the instr to pshader_gen_output_modifier_line.
2009-05-08 12:20:25 +02:00
Stefan Dösinger
2fd485ae31
winedd: Move shader_*_add_instruction_modifiers into the shader backend.
2009-05-08 12:20:18 +02:00
Stefan Dösinger
4daa3e5320
wined3d: Always declare single constants in ARB if rel addr is not used.
...
This is needed to raise the number of advertised constants to the GL
limit. The ARB assembler ususally does not optimize away unused
constants, so we have to do this.
2009-05-08 12:15:26 +02:00
Henri Verbeet
5e473cb17f
wined3d: Group register information into struct wined3d_shader_register.
2009-05-08 12:13:17 +02:00
Henri Verbeet
65622a052c
wined3d: Create a struct wined3d_shader_version to store version information.
...
The version tokens in SM1-3 and SM4 are similar, but not the same.
2009-05-07 14:44:21 +02:00
Stefan Dösinger
4c29105cb2
wined3d: Pack hardcoded local constants in ARB.
...
This makes the location of used program.local parameters more
predictable and eases sharing this space with other private constants.
2009-05-06 13:12:45 +02:00
Stefan Dösinger
df5d82dd5b
wined3d: Pack ARB srgb constants better.
...
There's no need to waste constants for repeatedly loading the same value.
2009-05-05 14:13:20 +02:00
Henri Verbeet
2a5a6a3439
wined3d: Store the SM 1-3 opcode information tables in the SM 1-3 frontend.
2009-05-05 11:34:28 +02:00
Henri Verbeet
2378108eb9
wined3d: Create a frontend for parsing shaders.
2009-05-04 12:53:08 +02:00
Henri Verbeet
8d4c90496f
wined3d: Store the sampler type in struct shader_reg_maps.
...
Instead of the usage token.
2009-04-29 13:08:01 +02:00
Francois Gouget
6376941266
wined3d: Avoid using an implicit value to set fogcoord to 0.0.
2009-04-23 18:14:27 +02:00
Henri Verbeet
fc60083ed2
wined3d: Handle the destination modifier shift in the frontend rather than the backend.
2009-04-23 14:22:06 +02:00
Henri Verbeet
fec1fa93cf
wined3d: Handle the swizzle shift in the frontend rather than the backend.
2009-04-22 13:14:14 +02:00
Henri Verbeet
629801bccb
wined3d: Get rid of the token field from struct wined3d_shader_src_param.
2009-04-22 13:14:03 +02:00
Henri Verbeet
7a3d4ce76f
wined3d: Pass a struct wined3d_shader_src_param to shader_arb_get_swizzle().
2009-04-22 13:13:57 +02:00
Henri Verbeet
db5ab97125
wined3d: Store the source swizzle in struct wined3d_shader_src_param.
2009-04-21 14:00:02 +02:00
Henri Verbeet
644439ff0d
wined3d: Pass a struct wined3d_shader_src_param to pshader_gen_input_modifier_line().
2009-04-21 13:56:58 +02:00
Henri Verbeet
ea0b3b42eb
wined3d: Pass a struct wined3d_shader_src_param to shader_arb_add_src_param().
2009-04-20 14:13:33 +02:00
Henri Verbeet
1ae060be4a
wined3d: Simplify replicating the .x swizzle in shader_hw_mov().
...
It becomes even simpler once the swizzle shift and token field are eliminated.
2009-04-20 14:13:28 +02:00
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
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
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
Henri Verbeet
18cdcc0b7e
wined3d: Pass a struct wined3d_shader_dst_param to shader_arb_get_write_mask().
2009-04-14 15:25:01 -05:00
Tobias Jakobi
0c2514bd8f
wined3d: Rename some NP2 fixup variables and update comments.
2009-04-13 17:32:11 -05:00
Tobias Jakobi
9657e81429
wined3d: Add newline to fixme.
2009-04-13 17:32:03 -05:00
Tobias Jakobi
6e970c5d95
wined3d: glsl: Enable load_np2fixup_constants.
2009-04-10 14:00:58 +02:00
Tobias Jakobi
9b067a6ca5
wined3d: Add load_np2fixup_constants function to shader backend.
2009-04-10 14:00:50 +02:00
Stefan Dösinger
754b5cf2ad
wined3d: Deal with reserved shader constants in the backend.
...
This moves the GLSL and ARB specific reserved constants out of directx.c into
the get_caps methods of the shader backends. That way the number of reserved
constants remains in the backend.
GL_LIMITS({v/p}shader_constantsF) now contains the real number of constants as
advertised by GL instead of some mixture of GL info and backend implementation
specifics. This makes it easier for backends to decide how many constants to
use.
2009-04-10 11:22:55 +02:00
Henri Verbeet
3a5bbe6a0c
wined3d: Split vshader_program_add_param() in shader_arb_add_src_param() and shader_arb_add_dst_param().
2009-04-10 10:23:38 +02:00
Henri Verbeet
e6031afdfa
wined3d: Merge pshader_get_register_name() and part of vshader_program_add_param().
2009-04-10 10:23:33 +02:00
Henri Verbeet
9a28d273bc
wined3d: Explicitly pass the register type and index to pshader_get_register_name().
2009-04-10 10:23:24 +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
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
6660978b44
wined3d: Use register_idx in the ARB shader backend.
2009-04-03 13:01:50 +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
29c9dc989d
wined3d: Use the source and destination parameter count in the ARB shader backend.
2009-04-03 13:01:20 +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
d633b6d47e
wined3d: Avoid comparing against WINED3DSIO_* in the ARB shader backend.
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
Stefan Dösinger
3fbdb64270
wined3d: Update a comment.
...
shader_select takes care of compiling the shader since we have the shader
duplication infrastructure. However, there's still a motivation to skip the
shader_select call if the vertex shader is dirty.
2009-03-30 14:21:52 +02:00
Stefan Dösinger
703dcca61b
wined3d: Fix some whitespace.
2009-03-30 14:21:44 +02:00
Henri Verbeet
afc5744e70
wined3d: Pass format_desc to set_shader().
...
This should be the last unnecessary getFormatDescEntry() call.
2009-03-24 12:57:45 +01:00
Henri Verbeet
a56e3a102b
wined3d: Only return a pointer to struct GlPixelFormatDesc from getFormatDescEntry().
2009-03-13 11:29:10 +01:00
Henri Verbeet
362bc0d694
wined3d: Don't compare const_num against -1.
2009-03-09 14:39:39 +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
6012475e59
wined3d: Properly update last_was_pshader.
2009-02-24 16:57:30 +01:00
Henri Verbeet
828f42cb1f
wined3d: Add some traces to state handlers.
...
Should make it a bit clearer what's happening in some cases.
2009-02-19 12:53:44 +01:00
Stefan Dösinger
693d9ded47
wined3d: Properly set the fog frag coord according to the FOGTABLEMODE.
...
This also fixes the test that an earlier patch broke, so the todo_wine can be
removed again.
2009-02-11 12:21:44 +01:00
Stefan Dösinger
8dcd51286d
WineD3D: Put vertex shader duplication infrastructure in place.
2009-02-11 12:21:25 +01:00
Michael Stefaniuc
118c75a8c7
wined3d: Remove superfluous pointer casts.
2009-02-03 12:40:14 +01:00
Stefan Dösinger
50109aa969
wined3d: Get rid of last_was_foggy_shader & friends.
...
The fog settings do not depend on wether the shader writes to oFog or not,
instead they depend on the FOGVERTEXMODE and FOGTABLEMODE settings, and if a
vertex shader is bound at all.
It works the same way as with the fixed function, and having a vertex shader
is the same as using pretransformed vertices, just that the fog coord comes
from the shader instead of the specular color:
FOGTABLEMODE != NONE: The Z coord is used, oFog is ignored
FOGTABLEMODE == NONE, with VS: oFog is used
FOGTABLEMODE == NONE, no VS, XYZ: Z is used
FOGTABLEMODE == NONE, no VS, XYZRHW: diffuse color is used
2009-01-20 12:45:40 +01:00
Stefan Dösinger
3c3272dc41
wined3d: Don't single-allocate new gl shaders.
2009-01-20 12:45:09 +01:00
Stefan Dösinger
1deafcb5a7
wined3d: Split the remains of state_fog.
2009-01-12 13:02:49 +01:00
Stefan Dösinger
2dd18635c9
wined3d: Move fogdensity and fogcolor to the fragment pipeline.
2009-01-12 13:02:29 +01:00
Stefan Dösinger
e61aa24aa3
wined3d: Use the ARB fog option in ARB_fragment_program shaders.
...
This is the "replacement" for the fog coord optimization removed in
the previous patch.
2009-01-12 13:02:19 +01:00
Stefan Dösinger
7c21147dcd
wined3d: Remove the pixelshader fogstart/fogend optimization.
2009-01-12 13:01:49 +01:00
Henri Verbeet
6791e6b752
wined3d: Simplify handling of swizzled attributes.
...
This should also be a little bit faster.
2009-01-08 13:21:43 +01:00
Henri Verbeet
a8697d90e4
wined3d: Renumber WINED3DTEXTURESTAGESTATETYPE enum elements.
...
Saves some space by not having unused entries is the arrays tracking these
states.
2009-01-06 12:45:43 +01:00
Allan Tong
fdd512deeb
wined3d: Add mapping for MOV instructions in shader_hw_map2gl.
2009-01-02 11:53:35 +01:00
Henri Verbeet
2b926db50d
wined3d: Make use_vs() and use_ps() work on a stateblock instead of a device.
...
Most callers work on a stateblock rather than a device, and the main fields
we check (vertexShader and pixelShader) are part of the stateblock as well.
2008-12-31 12:25:56 +01:00
Henri Verbeet
6f5af4047f
wined3d: Get rid of the glname field in struct SHADER_OPCODE.
...
It's only used for shader_hw_map2gl() and vshader_hw_rsq_rcp(), and we
can handle those the same way we handle the GLSL equivalents.
2008-12-30 11:36:35 +01:00
Francois Gouget
2166afceb7
Assorted spelling fixes.
2008-12-29 11:36:49 +01:00
Henri Verbeet
02e4c33611
wined3d: Consistently use .xyzw for vector components.
2008-12-20 11:11:55 +01:00
Stefan Dösinger
690cbe76ac
wined3d: Make pixelshaders disable fog properly.
...
This is a first step towards cleaning up the fog mess. The fog
parameter is added to the pixelshader compile args structure. That way
multiple pshaders are compiled for different fog settings, and the
pixel shader can remove the fog line if fog is not enabled. That way
we don't need special fog start and end settings, and this allows us
to implement EXP and EXP2 fog in the future too.
2008-12-19 17:17:16 +01:00
Stefan Dösinger
20189eb4f8
wined3d: Make use of ps_compile_args in arb shader.
2008-12-19 17:16:56 +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
Stefan Dösinger
5315b7992d
wined3d: Correct a stage number.
2008-12-16 14:34:20 +01:00
Stefan Dösinger
6ec741e766
wined3d: Set up the shaders when delaying fixed func applying.
2008-12-16 14:31:39 +01:00
Henri Verbeet
8553665cb1
wined3d: Move the shader version to reg_maps.
2008-12-15 14:00:26 +01:00
Henri Verbeet
b409061337
wined3d: Make some constant arrays also static.
...
As pointed out by Dan Kegel.
2008-12-10 10:50:37 +01:00
Henri Verbeet
4aa00e8a21
wined3d: Rename texture_stage_op.color_correction to texture_stage_op.color_fixup.
...
This is consistent with other uses of struct color_fixup_desc.
2008-12-10 10:50:24 +01:00
Henri Verbeet
ce4d03318b
wined3d: Fix some spelling errors.
2008-12-09 11:27:51 +01:00
Henri Verbeet
4997bee1bf
wined3d: Add functions to initialize and free shader buffers.
2008-12-09 11:27:13 +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
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
9f2fa8ba25
wined3d: Remove sampled_format from IWineD3DBaseShaderClass, it isn't used anywhere.
2008-12-04 11:59:14 +01:00
Henri Verbeet
b451048eb7
wined3d: Move GlPixelFormatDesc to wined3d_private.h where it belongs.
...
Also remove the silly typedef.
2008-12-04 11:59:06 +01:00
Henri Verbeet
d8f6e63541
wined3d: Const correctness fixes for arb_program_shader.c.
2008-11-26 12:05:14 +01:00
Henri Verbeet
cfb3bea895
wined3d: Make the SHADER_OPCODE_ARG parameter to shader handlers const.
2008-11-26 12:05:06 +01:00
Henri Verbeet
eb78c2a082
wined3d: Const correctness fixes for utils.c.
2008-11-26 12:04:56 +01:00
Stefan Dösinger
33482a732e
wined3d: Enable blue = 1.0 fixup for D3DFMT_V8U8.
...
The dx7 sdk demos need this.
2008-11-25 13:07: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
Stefan Dösinger
aed9305c78
wined3d: Store shader IDs in the vs and ps impl structures.
2008-11-25 13:06:45 +01:00
Stefan Dösinger
dd8905543b
wined3d: Pass some stateblock values around directly.
...
This was suggested by Ivan quite a while ago, and we need it to better
handle conflicting texture format corrections and similar stateblock
value changes which until now required a recompilation of the entire
shader
2008-11-25 13:06:35 +01:00
Stefan Dösinger
ff767f4984
wined3d: Make the shader backend call CompileShader.
...
A number of considerations contribute to this:
1) The shader backend knows best which shader(s) it needs. GLSL needs
both, arb only one
2) The shader backend may pass some parameters to the compilation
code(e.g. which pixel format fixup to use)
3) The structures used in (2) are different in vs and ps, so a
baseshader::Compile won't work
4) The structures in (2) are wined3d-private structures, so
having a public method in the vtable won't work(its a bad idea
anyway).
2008-11-25 13:06:23 +01:00
Stefan Dösinger
5c79a9f437
wined3d: Rename the fragment ffp desc structures.
...
This reflects the fact that they describe the fragment pipeline.
The vertex pipeline will use its own structures.
2008-11-20 12:17:45 +01:00
Stefan Dösinger
234e995bdc
wined3d: Make sure the arbfp pipeline replacement constants are loaded.
...
The code here skipped constant loading when a pixel shader was in use,
and only reloaded them on ffp use if the shader implementation used
ARB too. This way a e.g. texfactor change could get lost if GLSL
shaders are used, and the texfactor changed while a pixel shader was
in use.
2008-11-20 12:16:57 +01:00
Henri Verbeet
495fcc72a6
wined3d: Avoid using a stack buffer in a few places in shader_hw_map2gl().
2008-11-19 14:22:49 +01:00
Henri Verbeet
9b118cc345
wined3d: Give mov & mova their own handler.
2008-11-19 14:22:41 +01:00
Henri Verbeet
bd427f58a0
wined3d: Make it more obvious the pshader path in shader_hw_map2gl() doesn't handle opcodes without parameters.
2008-11-19 14:22:34 +01:00
Stefan Dösinger
620a423b22
wined3d: Kill the GL_ATI_envmap_bumpmap code.
...
GL_ATI_envmap_bumpmap provides two things: Signed V8U8 pixel formats,
and bump mapping. The extension is only supported on fglrx, and this
driver also supports GL_ARB_fragment_program. Thus the bump mapping
code is never used on any driver out there. Furthermore, if it is
used, it tends to crash the driver
The signed pixel format is used, as it can be used by pixel shaders or
the ARBfp replacement. However, the format is broken in fglrx, and
negative values are clamped to 0.0. This results in test
failures. WineD3D has an alternative codepath using scale+bias to
enable V8U8 using a standard signed RGB which works correctly on
fglrx.
2008-11-04 11:41:14 +01:00
Stefan Dösinger
8b38533f69
wined3d: Restore the fragment replacement prog after depth_blt.
...
The current code properly enabled/disabled GL_ARB_fragment_program
after a depth blit, but it did not restore the bound fragment program
properly. This leads to problems if a depth blit was done between two
draws without any change of the fragment processing settings.
2008-11-03 13:34:13 +01:00
Henri Verbeet
373a43442d
wined3d: Remove a FIXME that doesn't apply anymore.
2008-11-03 11:49:20 +01:00
Henri Verbeet
c090471a49
wined3d: Properly break in get_argreg() (LLVM/Clang).
2008-10-31 12:58:37 +01:00
Henri Verbeet
17ab7f6b83
wined3d: Support some more depth blt texture types for arb programs.
2008-10-29 11:51:54 +01:00
Henri Verbeet
437b342424
wined3d: Pass explicit texcoords to depth blt.
2008-10-28 12:33:27 +01:00
Henri Verbeet
57401fcab2
wined3d: Pass the texture type to the shader depth blt function.
2008-10-28 12:33:18 +01:00
Roderick Colenbrander
3a1aeef7c7
wined3d: Add ENTER_GL/LEAVE_GL to gen_yuv_shader.
2008-10-20 11:37:54 +02:00
Roderick Colenbrander
5163a360e0
wined3d: arbfp_blit_unset should call ENTER_GL/LEAVE_GL instead of the caller.
2008-10-20 11:37:46 +02:00
Roderick Colenbrander
8a002b09c1
wined3d: arbfp_set_shader_blit should handle ENTER_GL/LEAVE_GL instead of the caller.
2008-10-20 11:37:38 +02:00
Alexandre Julliard
6cfef95ce7
wined3d: Convert source files to utf-8.
2008-10-18 19:21:20 +02:00
Henri Verbeet
9aaccfe77f
wined3d: Correct some swizzles and write masks in arb_program_shader.
2008-10-09 12:14:21 +02:00
Henri Verbeet
a0940051eb
wined3d: Make some more ARB program functions private to the backend.
2008-09-24 12:53:16 +02:00
Henri Verbeet
2e76954097
wined3d: Move part of the shader instruction table to the backend.
2008-09-24 12:53:05 +02:00
Henri Verbeet
ca28930113
wined3d: Merge pshader_hw_map2gl() and vshader_hw_map2gl().
...
This isn't the prettiest way to merge those functions, but it's a start.
2008-09-23 12:25:27 +02:00
Henri Verbeet
ee49230cd2
Make some ARB program structs and functions private to the backend.
2008-09-16 22:33:42 +02:00
Roderick Colenbrander
e3e113383e
wined3d: Degrade an ERR to a TRACE.
2008-09-15 11:29:20 +02:00
Stefan Dösinger
ae7572217d
wined3d: Some ARB code fixes.
2008-09-11 11:43:34 +02:00
Stefan Dösinger
035729ab97
wined3d: Don't disable arbfp if the pipeline replacement is in.
2008-09-11 11:43:30 +02:00
Jeff Zaroyko
6a14bcc824
wined3d: Add missing HeapFree.
2008-09-08 12:31:43 +02:00
Stefan Dösinger
271f56c9f1
wined3d: Close a pshader on-off switching loophole.
2008-09-05 11:23:19 +02:00
Stefan Dösinger
ab74030ec5
wined3d: Optimize the projected bump map handling.
2008-09-02 14:56:57 +02:00
Stefan Dösinger
d60ece20b5
wined3d: Implement secondary color in the arbfp ffp pipeline.
2008-09-02 14:56:15 +02:00
Stefan Dösinger
422eebd2c3
wined3d: BLENDTEXTUREALPHAPM reads the texture.
2008-09-02 14:55:57 +02:00
Stefan Dösinger
3b48660f43
wined3d: Implement YV12 support for emulated overlays.
...
This is the prefered format of many codecs, and for some codecs this
is the only supported output format. As usual I try to handle all the
conversion in the GPU and keep the CPU involvement minimal to gain the
full performance of PBO transfers.
2008-09-02 14:55:50 +02:00
Stefan Dösinger
af8d268a39
wined3d: Handle projected textures properly in arbfp and atifs.
...
GL_ARB_fragment_program and GL_ATI_fragment_shader can disable
projected textures properly, and they can also handle
D3DTTFF_PROJECTED | D3DTTFF_COUNT3 properly.
2008-08-28 11:24:49 +02:00
Stefan Dösinger
005e5e868e
wined3d: Replace an #if 0 with if(0).
2008-08-28 11:24:49 +02:00
Stefan Dösinger
dda59e361c
wined3d: Update the arbfp shader on a texturetransformflags change.
2008-08-27 13:21:24 +02:00
Stefan Dösinger
9b94c0abb9
wined3d: Make the alphaop == colorop matching a bit smarter.
2008-08-26 12:07:41 +02:00
Stefan Dösinger
4767be8cde
wined3d: The final luminance factor is clamped.
2008-08-26 12:07:41 +02:00
Stefan Dösinger
f8ead75566
wined3d: Declare the texture factor when D3DTOP_BLENDFACTORALPHA is used.
2008-08-26 12:07:41 +02:00
Stefan Dösinger
8fc2cfe432
wined3d: Fix projected bump mapping.
2008-08-26 12:07:41 +02:00
Stefan Dösinger
6c6a6a2e61
wined3d: Implement D3DTA_ALPHAREPLICATE in arbfp and atifs.
...
Also adds a simple test for this. In the fixed function and nvrc/nvts
code this already works properly.
2008-08-26 12:07:41 +02:00
Stefan Dösinger
6c12b81552
wined3d: Implement D3DTOP_BUMPENVMAPLUMINANCE.
2008-08-26 12:07:41 +02:00
Stefan Dösinger
f39e122477
wined3d: Add fixed function sRGB write correction.
2008-08-25 12:25:13 +02:00
Stefan Dösinger
f0f32912a6
wined3d: Make sure the pixel shader is compiled.
...
If we're heading out of the pixelshader handler early, and a pixel
shader is in use, the pixel shader may not be compiled. The vertex
shader handler then checks if the pixel shader is dirty, and calls the
shader backend to apply the shader if it isn't. Thus, in the case of
GLSL, the shader code could attempt to link an uncompiled shader into
the program. This isn't much of a problem because when the fog is
applied, the pixel shader is compiled and the program re-linked.
2008-08-25 12:24:24 +02:00
Stefan Dösinger
bbf313e76a
d3d9: Test for fixed function value clamping.
2008-08-21 13:27:58 +02:00
Stefan Dösinger
8fe6bf0bad
wined3d: Fix the unused arg marker.
2008-08-20 12:34:44 +02:00
Stefan Dösinger
1f4cf3513d
wined3d: Implement YUV emulation with GL_ARB_fragment_program.
2008-08-20 12:26:14 +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
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