Commit Graph

371 Commits

Author SHA1 Message Date
Stefan Dösinger 141f31f05d wined3d: Move stream source and vshader to misc and vertex pipeline tables. 2008-07-08 10:46:42 +02:00
Stefan Dösinger 6675374dda wined3d: Make the stream source application a regular state function. 2008-07-08 10:46:32 +02:00
Stefan Dösinger 68dec9d161 wined3d: Implement the state merger and start to use it. 2008-07-08 10:46:20 +02:00
Stefan Dösinger 98faed8ff5 wined3d: Start the state splitup.
The idea of this patchset is to split the monolithic state set into 3
parts, vertex processing, fragment processing and other states(depth,
stencil, scissor, ...). The states will be provided in templates which
can be (mostly) independently combined, and are merged into a single
state table at device creation time. This way we retain the advantages
of the single state table and having the advantage of separated
pipeline implementations which can be combined without any manually
written glue code.
2008-07-08 10:45:56 +02:00
Francois Gouget 633ee950a1 Assorted spelling fixes. 2008-05-07 12:07:11 +02:00
Stefan Dösinger dc07ddb531 wined3d: Fix the GL_ATI_separate_stencil codepath.
glStencilFuncSeparateATI does not take a face argument, instead it
sets the front and back facing functions at once. This means the
renderstate_stencil_twosided helper function is somewhat pointless for
this extension.
2008-04-24 22:09:36 +02:00
Stefan Dösinger 9ee7e42de8 wined3d: Call activate_dimensions from the atifs code. 2008-04-24 11:54:28 +02:00
Austin English 6e59cd2c34 Spelling fixes. 2008-04-22 12:20:12 +02:00
Stefan Dösinger 3e5899b38d d3d9: Some Windows drivers set undefined attributes to 0.0. 2008-04-09 11:55:22 +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
Roderick Colenbrander 76014205de wined3d: Fix a postpixelshader_blending bug. 2008-03-31 12:14:33 +02:00
Roderick Colenbrander 4eaa424c79 wined3d: Initial post pixelshader blending support. [attempt 2].
For each pixel format we store a flag in the table whether it supports
post pixelshader blending. Before applying blending or during a
context switch we verify that blending is turned off for the
format. In case of R32F this gave a 5-6x performance boost (without
filtering and software conversion).
2008-03-28 15:50:24 +01:00
Stefan Dösinger 4640be8dc8 wined3d: Fragment processing using GL_ATI_fragment_shader.
This adds code for handling fixed function fragment processing with the
GL_ATI_fragment_shader extension. This is a sort-of programmable
interface for fragment processing at the level of shader model 1.4 in
d3d. This code is of use on r200, r250 and r280 cards(radeon 8500 to
9200) which do not support GL_ARB_fragment_program, but support pixel
shader 1.4 on Windows. This code is somewhat a counterpart to the
existing fragment processing code using GL_NV_register_combiners and
GL_NV_texture_shader.
2008-03-25 19:50:32 +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
Philip Nilsson 1110f17581 wined3d: Initialize maxAttribs in case it isn't changed by glGetIntegerv. 2008-03-24 13:26:20 +01:00
Stefan Dösinger d20768c120 wined3d: Support shininess > 128 if opengl does. 2008-03-05 19:23:06 +01:00
Stefan Dösinger 167a271434 wined3d: Support more than one texbem instruction per shader. 2008-03-05 19:22:44 +01:00
James Hawkins c2a627c6e8 janitorial: Remove links to any microsoft site. 2008-03-01 12:17:07 +01:00
Roderick Colenbrander c2d978410f wined3d: Add separate alpha blend support. 2008-02-18 14:19:57 +01:00
Stefan Dösinger c2d97b2329 wined3d: Add a test for fixed function bump mapping. 2008-02-18 13:34:25 +01:00
Andrew Talbot b3a58a2486 wined3d: Remove unneeded casts. 2008-01-24 11:41:36 +01:00
Francois Gouget d0794c4aeb Assorted spelling fixes. 2008-01-23 21:16:22 +01:00
Alexander Dorofeyev 536f98000d wined3d: Change colorkey fixup for stage 0 alphaop / alphaarg. 2008-01-22 11:19:05 +01:00
Austin English 3471f841a1 wined3d: Spelling fixes. 2008-01-18 12:53:33 +01:00
Roderick Colenbrander 916b56391d wined3d: Fix glBlendColorEXT for use on RivaTNT. 2008-01-14 13:10:28 +01:00
Stefan Dösinger fd711c57df wined3d: Combine two glScalef calls into one. 2007-12-27 13:44:18 +01:00
Stefan Dösinger 44b8915371 wined3d: Get rid of the invymat.
glScalef(1.0, -1.0, 1.0) does the same as the glMultMatrix with the
invymat matrix, and it is more optimal.
2007-12-27 13:44:13 +01:00
Alexander Dorofeyev 27c98fd628 wined3d: Also update alpha test when stage texture is NULL. 2007-12-27 13:43:49 +01:00
Stefan Dösinger 47a8a6bd44 wined3d: Implement and test vertex fixups with per stream offsets. 2007-12-21 13:44:16 +01:00
Stefan Dösinger b5f925cae0 wined3d: Implement half float vertex buffer conversion. 2007-12-21 13:13:56 +01:00
Stefan Dösinger 2d90449500 wined3d: Fixed function vertex attribute types are flexible. 2007-12-20 10:49:42 +01:00
Stefan Dösinger a3c2fb9e64 wined3d: Store if half float conversion is needed in the decl. 2007-12-20 10:48:16 +01:00
Rico Schüller b7dfe3afb6 wined3d: Fix some typos. 2007-12-20 10:47:06 +01:00
Stefan Dösinger 7a1d35e513 wined3d: Emulate half float vertices if GL_NV_half_float is not there. 2007-12-19 12:19:27 +01:00
Francois Gouget 5f7a9cea38 Assorted spelling fixes. 2007-12-07 16:35:32 +01:00
Stefan Dösinger f700cbe74b wined3d: Add an alpha blending test. 2007-12-07 16:26:43 +01:00
Gerald Pfeifer 81f32c7a38 wined3d: Fix error handling in transform_texture(). 2007-12-04 18:41:45 +01:00
Stefan Dösinger fcb49934d0 wined3d: Retrieve the height properly when setting the viewport. 2007-12-04 14:32:39 +01:00
Stefan Dösinger 8689fe32c6 wined3d: Use the proper drawable size when setting the scissor rect. 2007-12-04 14:32:39 +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 3f32847494 wined3d: Do not try to disable unsupported texture units. 2007-11-28 13:40:28 +01:00
Stefan Dösinger 0353d031bc wined3d: Add some missing checkGLcall calls. 2007-11-28 13:40:28 +01:00
Stefan Dösinger f2c19fbc0b wined3d: Correctly handle the y offset with offscreen rendering.
This fixes a regression introduced with the MAD patch.
2007-11-27 16:02:34 +01:00
Stefan Dösinger 26f7eae9cf wined3d: Non power of two texture fixes. 2007-11-14 11:59:21 +01:00
Stefan Dösinger 0334c1760f wined3d: Apply matrices when switching from transformed vertices to shaders. 2007-11-14 11:59:09 +01:00
Stefan Dösinger 58a761a88b wined3d: Read the framebuffer size from the surface, not the window. 2007-11-14 11:58:47 +01:00
Stefan Dösinger e4f8a2da2b wined3d: Depth stencil fixes. 2007-11-14 11:58:36 +01:00
Stefan Dösinger 5ffea6e591 wined3d: Honor the driver's min point size. 2007-11-08 12:05:19 +01:00
Stefan Dösinger ee32ac575b wined3d: A point size fix. 2007-10-26 15:17:01 +02:00
Stefan Dösinger 9694cb2df3 wined3d: Ignore texture transforms when a shader is used, not set. 2007-10-22 15:59:00 +02:00
Chris Robinson c4cc337d7a wined3d: Prevent some console spamming. 2007-10-09 12:34:55 +02:00
Roderick Colenbrander c2bf124a90 wined3d: Use EXT-versions of glBlend*. 2007-10-09 12:34:49 +02:00
Stefan Dösinger 6313e0ffff wined3d: SRGB write correction emulation. 2007-09-24 13:30:30 +02:00
Stefan Dösinger 05cef43308 wined3d: Keep the selected stencil setup face set to GL_FRONT. 2007-09-20 15:52:47 +02:00
Stefan Dösinger 145d56847b wined3d: Disable two sided stencil if it is supported, but not enabled. 2007-09-19 11:40:28 +02:00
Stefan Dösinger ad3fe8562b wined3d: Enable the stencil test if two sided stencil is used. 2007-09-19 11:40:19 +02:00
Stefan Dösinger e62a4b0352 wined3d: Fix a copypaste error. 2007-09-19 11:40:10 +02:00
Stefan Dösinger 703ec4cbc4 wined3d: Set the stencil mask for both faces. 2007-09-19 11:40:02 +02:00
Stefan Dösinger 5a63b79a66 wined3d: Untie culling and offscreen rendering. 2007-09-19 11:39:55 +02:00
Stefan Dösinger c5410a6f22 wined3d: Use GL_NV_depth_clamp to implement clipping disable. 2007-09-17 12:08:40 +02:00
Stefan Dösinger 9e340f0fdb wined3d: Add a fixme for D3DCMP_NOTEQUAL and D3DCMP_EQUAL. 2007-09-17 12:08:28 +02:00
Stefan Dösinger 5ab9d85c39 wined3d: Implement texbeml. 2007-09-12 12:10:03 +02:00
Stefan Dösinger a305af0b30 wined3d: Fix the z range. 2007-09-11 13:47:36 +02:00
Stefan Dösinger 8c9c084004 wined3d: Use 0/0/0 as normal if no normal is supplied. 2007-08-30 11:57:18 +02:00
Stefan Dösinger 322b55e29a wined3d: Fix the half pixel correction. 2007-08-28 11:55:27 +02:00
Stefan Dösinger fe0f0eb48a wined3d: Some texture transform fixes. 2007-08-27 18:28:43 +02:00
Stefan Dösinger a8e21d0692 wined3d: Texture transforms are disabled when drawing rhw vertices. 2007-08-27 18:28:38 +02:00
Stefan Dösinger 98bc83be7c wined3d: Fall back to drawStridedSlow if fog coords are used. 2007-08-23 13:33:22 +02:00
Stefan Dösinger 0dade7207f wined3d: Implement range based fog and advertize it correctly. 2007-08-21 13:35:57 +02:00
Stefan Dösinger 04d62b4322 wined3d: fogstart == fogend means full fog. 2007-08-21 13:35:48 +02:00
Stefan Dösinger 306fcfeee7 wined3d: FIX D3DBLEND_BOTHSRCALPHA and BLEND_BOTHINVSRCALPHA. 2007-08-20 22:32:02 +02:00
Stefan Dösinger 06cc0fa95f wined3d: GL_SRC_ALPHA_SATURATE is supported as src blend param only. 2007-08-17 12:01:38 +02:00
Stefan Dösinger e7cbb340dc wined3d: Remove stateblock::set.*. 2007-08-13 11:36:43 +02:00
Stefan Dösinger 8de07265a6 wined3d: Downgrade an ERR. 2007-08-03 12:30:12 +02:00
Roderick Colenbrander 2c12c17ab6 wined3d: Compile against standard GL headers. 2007-07-31 21:36:56 +02:00
Stefan Dösinger d2016ff892 wined3d: Store the gl format table in the gl info structure. 2007-07-30 12:49:50 +02:00
Stefan Dösinger a0131a3272 wined3d: Split up the format table. 2007-07-30 12:49:39 +02:00
H. Verbeet b4e596e70e wined3d: Flip the scissor rect when rendering offscreen. 2007-07-26 11:51:34 +02:00
H. Verbeet be8226593c wined3d: Don't modify the blending parameters in state_blend(). 2007-07-24 11:25:45 +02:00
H. Verbeet 6421d45f53 wined3d: In tex_colorop() & tex_alphaop(), only check the mapped stage against GL_LIMITS(textures) if the texture is used. 2007-07-02 13:36:15 +02:00
H. Verbeet 25c673225b wined3d: Only set GL_SHADER_OPERATION_NV to GL_NONE for supported units. 2007-07-02 13:36:07 +02:00
H. Verbeet 9ed84211c1 wined3d: Only call activate_dimensions() if the texture is used. 2007-07-02 13:35:59 +02:00
H. Verbeet 5b7758f80c wined3d: Increase the sizes of texturing related arrays, in order to support vertex textures. 2007-06-26 11:57:17 +02:00
H. Verbeet 9c44b67d28 wined3d: Add max_vertex_samplers and max_combined_samplers to WineD3D_GL_Info. 2007-06-26 11:57:05 +02:00
H. Verbeet 3ad03206ab wined3d: Rename max_samplers to max_fragment_samplers. 2007-06-26 11:56:57 +02:00
Stefan Dösinger a3854be0b3 wined3d: Some point sprite fixes. 2007-06-25 20:04:58 +02:00
Stefan Dösinger 4f8eb6a32e wined3d: Clamp material power to 128.0. 2007-06-25 20:03:26 +02:00
Stefan Dösinger 2f4b9e42bc wined3d: Move material applying to the state table. 2007-06-25 11:35:59 +02:00
Stefan Dösinger b081cbaf40 wined3d: Emulate tracking of multiple material properties. 2007-06-21 13:09:30 +02:00
Stefan Dösinger 35ee1e9693 wined3d: Unload texture coords for all supported texture stages. 2007-06-21 13:09:17 +02:00
Stefan Dösinger 030b92a2f6 wined3d: Remove the FVF codepath from drawprim. 2007-06-21 13:09:08 +02:00
H. Verbeet 9f8083c646 wined3d: Only set GL_SHADER_OPERATION_NV to GL_NONE for mapped stages. 2007-06-18 12:33:55 +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
Francois Gouget 96c337f0a1 Assorted spelling fixes. 2007-06-07 19:24:32 +02:00
Francois Gouget 7d55f09e75 wined3d: Fix spelling of the state_separateblend() function. 2007-06-07 19:24:04 +02:00
Stefan Dösinger 2854c54201 wined3d: Keep GL_TEXTURE_2D enabled when using dummy textures. 2007-05-31 13:08:09 +02:00
Stefan Dösinger b6e87d47d5 wined3d: Don't mess with nv texture shaders if its not supported. 2007-05-31 13:08:01 +02:00
H. Verbeet 79ca4e022d wined3d: Load texture coordinates even if no texture is bound to that stage at this time. 2007-05-10 12:24:52 +02:00
H. Verbeet cde60c0b94 wined3d: Split texture coordinate loading from loadVertexData(). 2007-05-10 12:24:39 +02:00
H. Verbeet 5188ab4efa wined3d: Calling glDisableClientState() from loadVertexData() is redundant.
unloadVertexData() will already have done this if necessary.
2007-05-10 12:24:19 +02:00
H. Verbeet f8714d771a wined3d: Unload vertex weight data in case of EXT_VERTEX_WEIGHTING as well. 2007-05-10 12:24:07 +02:00
Stefan Dösinger 81504d6a2d wined3d: Support bump environment mapping using GL_NV_texture_shader. 2007-05-10 11:40:27 +02:00
Stefan Dösinger 4a8b55d456 wined3d: Unload vertex weight data in unloadVertexData. 2007-05-10 11:40:15 +02:00
Stefan Dösinger 28170f0474 wined3d: Implement environment bump mapping with GL_ATI_envmap_bumpmap. 2007-05-09 12:07:32 +02:00
Stefan Dösinger adb9b13b81 wined3d: Implement vertex blending using GL_ARB_vertex_blend. 2007-05-03 14:24:46 +02:00
Fabian Bieler e28630bc32 wined3d: Remove usesFog flag from IWineD3DVertexShaderImpl. 2007-04-23 13:55:45 +02:00
Stefan Dösinger 725057da47 d3d: Remove dependency on ddraw.h header. 2007-04-16 13:20:15 +02:00
Felix Nawothnig e3d3d1823d wined3d: Only issue state_patchsegments FIXME once. 2007-04-04 12:45:57 +02:00
Felix Nawothnig 413b9b2ad2 wined3d: Downgrade some ERRs to FIXMEs. 2007-04-04 12:45:49 +02:00
Francois Gouget 0081b430e1 Assorted spelling and English fixes. 2007-04-03 11:23:12 +02:00
Felix Nawothnig 18c9e5d5d0 wined3d: Use GL_TEXTURE_2D for dummy textures. 2007-03-30 11:25:23 +02:00
Felix Nawothnig 6760ccac1c wined3d: Fix broken ERR() message. 2007-03-30 11:25:02 +02:00
Felix Nawothnig 335f978e91 wined3d: Only disable GL_TEXTURE_CUBE_MAP_ARB if supported. 2007-03-30 11:24:56 +02:00
Jan Zerebecki 09e7791cba wined3d: Print lastpixel state fixme only once. 2007-03-28 12:43:14 +02:00
Stefan Dösinger 5e405d3b26 wined3d: Disable texture coordinate arrays on the correct unit. 2007-03-27 12:30:50 +02:00
Fabian Bieler 7cedd56d24 wined3d: Implement linear fog with pixel shader. 2007-03-23 12:30:23 +01:00
Stefan Dösinger 65c447082a wined3d: Fix client gl unit selection.
I forgot that when re-enabling register combiners during the state
management rewrite.
2007-03-19 12:18:07 +01:00
Stefan Dösinger 4b445124d3 direct3d: Add a fixed function fog test. 2007-03-15 12:14:50 +01:00
Stefan Huehner 4d1d01f266 Mark several functions as static. 2007-03-13 13:35:12 +01:00
H. Verbeet 6998d0d472 wined3d: Remove a redundant check in handleStreams(). 2007-03-13 11:56:10 +01:00
H. Verbeet 05d461aee9 wined3d: Remove some redundant checks in the vertexdeclaration() state handler. 2007-03-13 11:56:02 +01:00
H. Verbeet 30ee071eb9 wined3d: Disable vertex shaders when transformed vertices are used. 2007-03-13 11:55:55 +01:00
H. Verbeet 23cd4475f6 wined3d: Correct various texture limits checks. 2007-03-13 11:53:28 +01:00
Stefan Dösinger 81aeae3249 wined3d: Do not specify the viewport origin upside down when doing offscreen rendering.
The gl viewport origin is the lower left corner of the window, in d3d
it is the upper right corner. This is corrected when setting the
viewport. However, when we are doing offscreen rendering, this is
reversed. So do not flip the viewport origin when rendering offscreen.
2007-03-06 22:17:28 +01:00
Stefan Dösinger 6886b237ad wined3d: Disable depth stencil related states without a depth stencil buffer.
Except with fbos, it is not possible to remove the depth stencil
buffer from the opengl frame buffer, so when the d3d app sets a NULL
depth stencil disable all states that work with the depth stencil
buffer.
2007-03-06 22:17:15 +01:00
Stefan Dösinger e0a271ee0c wined3d: Adjust the rhw transformation for offscreen rendering. 2007-03-06 22:15:57 +01:00
Stefan Dösinger 2cdced8193 wined3d: Adjust the rhw transformation for offscreen rendering.
When drawing processed vertices with the fixed function pipeline the
projection matrix is set up to map y values from 0 to height to 1.0;
-1.0(gl and d3d coord systems are flipped). This moves the y axis to
the bottom of the drawing area. When later on the y inversion matrix
is applied for offscreen rendering, the coordinate system will get
flipped out of the viewport.

This patch sets the Y range up upside down when using offscreen
rendering, so the invymat will flip it to the correct position. This
has to happen before the 0.375 pixel correction.
2007-03-05 15:31:36 +01:00
H. Verbeet 3aaabf4e27 wined3d: Properly check the clipplane index against the limit. 2007-03-05 12:06:33 +01:00
Stefan Dösinger 5afbfd0359 wined3d: Clip planes with vertex shaders. 2007-02-28 21:09:58 +01:00
Stefan Dösinger 409aa73132 wined3d: Move clip planes to the state table. 2007-02-28 21:09:37 +01:00
Stefan Dösinger 38d961a749 wined3d: Leave the fog state handler after disabling fog. 2007-02-28 21:05:14 +01:00
Vitaliy Margolen 51ee7f4978 wined3d: Use application provided fog range when fog is enabled. 2007-02-26 13:58:09 +01:00
Stefan Dösinger 76b7cac7af wined3d: Light parameter fixes. 2007-02-21 10:55:31 +01:00
Francois Gouget 93494f2ac0 Assorted spelling fixes. 2007-02-20 20:30:51 +01:00
Stefan Dösinger 59ae2a56fb wined3d: Use VBOs for index buffers. 2007-02-20 11:50:10 +01:00
Stefan Dösinger ecfd4cb0e4 wined3d: Move the scissor rectangle to the state table. 2007-02-20 11:49:53 +01:00
Stefan Dösinger 762e227994 wined3d: Only scream about unsupported vertex blending when it is used. 2007-02-19 13:10:24 +01:00
Stefan Dösinger 266fc77cf0 wined3d: Lighting is calculated for vertices without normals.
It still should be disabled for transformed vertices though.
2007-02-19 13:08:35 +01:00
H. Verbeet a2fde7d912 wined3d: Get rid of any remaining d3d9 stuff in state.c. 2007-02-15 14:20:56 +01:00
Stefan Dösinger b3f96f4327 wined3d: alphaop fixes for color keying. 2007-02-15 11:40:57 +01:00
Stefan Dösinger d4c4e5d167 wined3d: Enable color keying only for surfaces without an alpha channel. 2007-02-15 11:40:44 +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
Stefan Dösinger efbd6d6332 wined3d: Give the bump env matrices their own states. 2007-02-15 11:35:52 +01:00
H. Verbeet 498f9c507a wined3d: Use WINED3DSTREAMSOURCE_INSTANCEDATA rather than D3DSTREAMSOURCE_INSTANCEDATA. 2007-02-15 11:15:25 +01:00
Francois Gouget 536e738552 Assorted spelling fixes. 2007-02-14 21:03:57 +01:00
Stefan Dösinger 0feddccfe3 wined3d: Instancing emulation. 2007-02-14 20:46:25 +01:00
Stefan Dösinger 93cd7ef7ff wined3d: Correctly load vertex attributes with a stride of 0. 2007-02-14 20:46:02 +01:00
Stefan Dösinger 174b6321eb wined3d: Move lights to the state table. 2007-02-14 20:45:15 +01:00
Stefan Dösinger acadf3f241 wined3d: Replace the light chain with a hashmap. 2007-02-14 20:44:58 +01:00