summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/PixelShaderGen.cpp
AgeCommit message (Collapse)Author
2015-02-21Merge pull request #2075 from magumagu/titantron-fixMarkus Wick
Partially fix WWE12 titantron videos.
2015-02-21Fix regression with directx when zfreeze=true and ztest=false.Scott Mansell
2015-02-18Partially fix WWE12 titantron videos.magumagu
The obvious question here is, why does it matter if we round or truncate? The key is that GC/Wii does fixed-point interpolation, where PC GPUs do floating-point interpolation. Discarding fractional bits makes the conversion from floating-point to fixed point give more consistent results. I'm not confident this is really the right fix, or that my explanation is completely correct; ideally, we don't want to depend on floating-point interpolation at all.
2015-01-23A few small cleanups based on code review.Scott Mansell
2015-01-23Fixes Mario Tennis Gimmick Courts and adds support for FastDepthCalcNanoByte011
- Calculate ZSlope every flush but only set PixelShader Constant on Reset Buffer when zfreeze - Fixed another Pixel Shader bug in D3D that was giving me grief
2015-01-23Make zfreeze use screenspace coordinates independant of IR.Scott Mansell
OpenGL requires the y coordinates to be flipped. Also refactored PixelGen code to remove duplicate code.
2015-01-23Fix various issues with zfreeze implemntation.Scott Mansell
Results are still not correct, but things are getting closer. * Don't cull CULLALL primitives so early so they can be used as reference planes. * Convert CalculateZSlope to screenspace coordinates. * Convert Pixelshader to screenspace coordinates (instead of worldspace xy coordinates, which is totally wrong) * Divide depth by 2^24 instead of clamping to 0.0-1.0 as was done before. Progress: * Rouge Squadron 2/3 appear correct in game (videos in rs2 save file selection are missing) * Shadows draw 100% correctly in NHL 2003. * Mario golf menu renders correctly. * NFS: HP2, shadows sometimes render on top of car or below the road. * Mario Tennis, courts and shadows render correctly, but at wrong depth * Blood Omen 2, doesn't work.
2015-01-23Initial port of zfreeze branch (3.5-1729)NanoByte011
Initial port of original zfreeze branch (3.5-1729) by neobrain into most recent build of Dolphin. Makes Rogue Squadron 2 very playable at full speed thanks to recent core speedups made to Dolphin. Works on DirectX Video plugin only for now. Enjoy! and Merry Xmas!!
2015-01-21Lighting Attenuation FixesNanoByte011
2015-01-21Merge pull request #1869 from Stevoisiak/GeneralConsistencyRyan Houdek
Minor consistency changes
2015-01-20PixelShaderGen: Fix uninitialized variables.Jules Blok
2015-01-12Minor consistency changesStevoisiak
Mostly small changes, like capitalization and spelling
2015-01-03Move worldpos into it's own varying.Scott Mansell
Previously it was packed into spare slots in clippos.xy and normal.w, but it's ugly and more importantly it's causing bugs. This was discovered during the debugging of a zfreeze branch, which expected clippos.xy to be xy position coordinates in clipspace (as the name suggested). Turns out the stereoscopy shader had also run into this trap, modifying clippos.x (introducing errors with per-pixel lighting). This commit has been moved outside of the zfreeze PR for fast merging.
2014-12-28PixelShaderGen: Don't assign to input variables.Jules Blok
2014-12-28VideoCommon: Don't pass structs between shaders, use the interface blocks ↵Jules Blok
instead.
2014-12-22OGL: fix ssbo based bbox supportdegasus
2014-12-19VideoCommon: Don't specify the redundant in/out qualifier if ↵Jules Blok
GL_ARB_shading_language_420pack is supported. Some driver developers interpreted "can" as "must" in the OpenGL specs. (I'm looking at you AMD)
2014-12-19VideoCommon: Add in/out qualifiers to centroid storage qualifier.Jules Blok
Fixes shaders for GPUs that don't support GL_ARB_shading_language_420pack.
2014-12-18VideoCommon: Don't pass structs between shader stages when geometry shaders ↵Jules Blok
are unsupported.
2014-12-18VideoCommon: Only use interface blocks when geometry shaders are supported.Jules Blok
2014-12-18VideoCommon: Pass interface blocks between shader stages to resolve naming ↵Jules Blok
conflicts.
2014-12-15VideoCommon: Assume we always use a geometry shader, not just for stereoscopy.Jules Blok
2014-12-14ShaderGen: Remove the GS_OUTPUT struct for OpenGL.Jules Blok
And remove the generator for it since it is no longer used outside of the geometry shader.
2014-12-14D3D: Define decimals in floating point numbersJules Blok
2014-12-14PixelShaderGen: Sample the correct texture slice.Jules Blok
2014-12-14D3D: Add geometry shader stereoscopy support.Jules Blok
2014-12-09PixelShaderGen: merge OGL+D3D bboxdegasus
2014-12-08Merge pull request #1657 from Tinob/masterMarkus Wick
Add HW bounding Box support to d3d backend
2014-12-05Common: Remove locale based functions from CommonFuncs.Lioncash
Since %f isn't used anymore in the shader generators, these can go.
2014-12-05Add HW bounding Box support to d3d backendRodolfo Bogado
2014-12-03Works around broken Intel Windows video drivers.Ryan Houdek
Just use regular boolean negation in our pixel shader's depth test everywhere except on Qualcomm. This works around a bug in the Intel Windows driver where comparing a boolean value against true or false fails but boolean negation works fine. Quite silly. Should fix issues #7830 and #7899.
2014-11-23ShaderGen: Only pass VS_OUTPUT between shaders if stereo 3D is enabled.Jules Blok
GLSL130 doesn't support passing structs between shaders. This is not a problem for stereo 3D which has a GLSL150 requirement.
2014-11-23VideoConfigDiag: Add stereoscopy options group.Jules Blok
2014-11-23ShaderGen: Rename "eye" to "layer".Jules Blok
Keeping things generic.
2014-11-23ShaderGenCommon: Move uniforms into a common static string.Jules Blok
2014-11-23ShaderGen: Handle ShaderCode objects directly.Jules Blok
ShaderGeneratorInterface does not have virtual function members, so we have to implement each type explicitly.
2014-11-23ShaderGen: Add a stereoscopy flag in the UID data.Jules Blok
2014-11-23PixelShaderGen: Sample the correct texture layer.Jules Blok
2014-11-23VertexShaderManager: Compute stereoscopy projection matrices.Jules Blok
2014-11-23Pass VS_OUTPUT structs between shaders.Jules Blok
2014-11-23use GL_TEXTURE_2D_ARRAY for most of our texturesdegasus
2014-11-17OGL: implement bounding box support with ssbodegasus
This implemention tries to be as accurate as the old SW implemention, but it will remove the dependcy of our vertexloader on videosw.
2014-10-29Fixes missing objects on Adreno hardware.Ryan Houdek
This particular bug from our friends over at Qualcomm manifests itself due to our alpha testing code having a conditional if statement in it. This is a fairly recent breakage this time around, it was introduced in the v95 driver which comes with Android 5.0 on the Nexus 5. So to break this issue down; In our alpha testing code we have two comparisons that happen and if they are true we will continue rendering, but if they aren't true we do an early discard and return. This is summed up with a fairly simple if statement. if (!(condition_1 <logic op> condition_2)) { /* discard and return */ } This particular issue isn't actually due to the conditions within the if statement, but the negation of the result. This is the particular issue that causes Qualcomm to fall flat on its face while doing so. I've got two simple test cases that demonstrate this. Non-working: http://hastebin.com/evugohixov.avrasm Working: http://hastebin.com/afimesuwen.avrasm As one can see, the disassembled output between the two shaders is different even though in reality it should have the same visual result. I'm currently writing up a simple test program for Qualcomm to enjoy, since they will be asking for one when I tell them about the bug. It will be tracked in our video driver failure spreadsheet along with the others.
2014-10-25Fix 'sizeof' which broke in my reference-to-pointer conversion.comex
2014-10-21Use pointers instead of references in GetUidData to avoid the undefined ↵comex
behavior of *(T *)nullptr (ewwww)
2014-10-16Merge pull request #1285 from degasus/masterskidau
PixelShaderGen: replace multiplication with shift
2014-10-14PixelShaderGen: replace multiplication with shiftMarkus Wick
iirc both nvidia and i965 doesn't optimize this
2014-09-24Fixed the "Undeclared identifier: uv0" OpenGL shader compile error that ↵skidau
appears in NBA2K11.
2014-07-18Support Sampler binding in the shader.Ryan Houdek
In the cases where we support the binding layout keyword, use it for more than binding UBO location. This changes it so it is supported for samplers as well. Instances when this is enabled is if a device supports GL_ARB_shading_language_420pack, or if it supports GLES 3.10.
2014-07-16PixelShaderGen: fix indentationdegasus