summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/PixelShaderGen.cpp
AgeCommit message (Collapse)Author
2017-05-03Add a workaround for a PowerVR glsl compiler bugJonathan Hamilton
It seems it doesn't like negating arguments for bitops, so suff like "var <<= (-othervar);" fails to compile
2017-03-15videoconfig: add BBoxPreferStencilImplementationMichael Maltese
@JMC47 requested this to be able to do performance comparisons.
2017-03-15VideoConfig: add bSupportsFragmentStoresAndAtomicsMichael Maltese
2017-03-05VideoCommon: remove unnecessary trunc()Tillmann Karras
2017-02-01LightingShaderGen: Remove unnecessary includesLioncash
2017-01-04VideoCommon: Make dst_alpha state implicit.degasus
2016-12-13PixelShaderGen: Fix incorrect indexing of tevLerpBiasStenzek
Fixes the white box in the fortune street fifolog.
2016-10-31PixelShaderGen: Remove unused global variable.Jules Blok
2016-10-31DriverDetails: Make the bug identifiers humanly readable.Jules Blok
2016-10-30PixelShaderGen: Don't use a global variable.Jules Blok
2016-10-29OGL: Fall back to the old dual-source blending behaviour.Jules Blok
2016-10-24PixelShaderGen: Don't use dual source blend if unsupported.Jules Blok
2016-10-23PixelShaderGen: Fix implicit type conversions.Jules Blok
2016-10-10PixelShaderGen: Use dual source blending to do 8-bit blending.Jules Blok
2016-10-10PixelShaderGen: Only set dither uid bit if actually used.Jules Blok
2016-10-10VideoConfig: Add an option to force RGB8 EFB format.Jules Blok
2016-10-10PixelShaderGen: Always truncate the alpha channel to 6-bit.Jules Blok
2016-10-10PixelShaderGen: Add support for dithering.Jules Blok
2016-10-10PixelShaderGen: Add support for RGBA6 EFB format truncation.Jules Blok
2016-10-04PixelShader: Drop redundant warning.degasus
This warning was raised both on UID generation and on shader generation.
2016-10-04LightingShader: Drop xfmem usage.degasus
Our shaders must only depend on the UID, not on any global state.
2016-10-04PixelShaderGen: Drop dstAlphaMode constant in shader generation.degasus
It is already stored within the UID.
2016-10-01Vulkan: Work around indexed fragment output bug on AMD driversStenzek
2016-10-01VideoCommon: Add APIType entry for VulkanStenzek
2016-10-01ShaderGen: Specify attribute/output locations/bindings explicitlyStenzek
This also shifts the SSBO index from index 3 to index 0.
2016-09-07PixelShaderGen: Always divide the texture coordinates by q.Jules Blok
Some games will set q to a different value than 1.0 through texture matrix manipulations. It seems the console will still do the division in that case.
2016-07-29VideoCommon: Make API_TYPE an enum classLioncash
Allows for forward declarations in most places, which prevents dumping unrelated VideoCommon.h contents directly into headers.
2016-06-26VideoCommon: Fix some warnings.Scott Mansell
2016-06-26Multithreadded Shadergen: Second pass over Pixel Shadergen.Scott Mansell
Note: It's not 100% perfect, as some of the GPU capablities leak into the pixel shader UID. Currently our UIDs don't get exported, so there is no issue. But someone might want to fix this in the future.
2016-06-26Multithreadded Shadergen: Second Pass over vertex/lighting ShadergensScott Mansell
As much as possible, the asserts have been moved out of the GetUID function. But there are some places where asserts depend on variables that aren't stored in the shader UID.
2016-06-26Remove global refrences from common code.Scott Mansell
Bug Fix: Previously vertex shaders and geometery shaders didn't track antialaising state in their UIDs, which could cause AA bugs on directx.
2016-06-26Multithreadded Shadergen: First pass over pixel ShadergenScott Mansell
Bug Fix: It was theoretically possible for a shader with depth writes disabled to map to the same UID as a shader with late depth writes. No known test cases trigger this.
2016-06-26UID Change: Fix bug with indirect stage UIDsScott Mansell
Bug Fix: The normal stage UIDs were randomly overwriting indirect stage texture map UID fields. It was possible for multiple shaders with diffrent indirect texture targets to map to the same UID. Once again, it dpesn't look like this bug was ever triggered.
2016-06-26Shader UID change: Only store the two bits of components we need.Scott Mansell
This frees up 21 bits and allows us to shorten the UID struct by an entire 32 bits. It's not strictly needed (as it's encoded into the length) but I added a bit for per-pixel lighiting to make my life easier in the following commits.
2016-06-26Multithreadded Shadergen: First Pass over vertex/lighting ShadergensScott Mansell
The only code which touches xfmem is code which writes directly into uid_data. All the rest now read their parameters out of uid_data. I also simplified the lighting code so it always generated seperate codepaths for alpha and color channels instead of trying to combine them on the off-chance that the same equation works for all 4 channels. As modern (post 2008) GPUs generally don't calcualte all 4 channels in a single vector, this optimisation is pointless. The shader compiler will undo it during the GLSL/HLSL to IR step. Bug Fix: The about optimisation was also broken, applying the color light equation to the alpha light channel instead of the alpha light euqation. But doesn't look like anything trigged this bug.
2016-06-24Further fixes to the formatting change. WX sucks.Pierre Bourdon
2016-06-24Reformat all the things. Have fun with merge conflicts.Pierre Bourdon
2016-04-23VideoCommon: Simplify indirect texture lookup code slightlyJeffrey Pfau
2016-04-23Revert "VideoBackend: Remove extraneous shifts from indirect texture lookups"Jeffrey Pfau
This reverts commit 1f1b127b69e47728593e8174d4ed8883622792a5.
2016-04-10PixelShaderGen: Fixes implicit type conversion or PR #3772.degasus
This regression did only happen on OpenGL ES.
2016-04-09PixelShaderGen: Move constant multiplication to constant generation.degasus
No need to do this within the shader per pixel if it can be done once.
2016-03-30ShaderGen: Only specify storage qualifier in interface block when neededStenzek
Drivers that don't support GL_ARB_shading_language_420pack require that the storage qualifier be specified even when inside an interface block. AMD's driver throws a compile error when "centroid in/out" is used within an interface block. Our previous behavior was to include the storage qualifier regardless, but this wasn't working on AMD, therefore we should check for the presence of the extension and include based on this, instead.
2016-03-26Merge pull request #3719 from Sonicadvance1/workaround_osx_video_driversPierre Bourdon
Workaround OS X video driver bug #24983074
2016-03-09Workaround OS X video driver bug #24983074Ryan Houdek
OS X's shader compiler has a bug with interface blocks where interface block members don't properly inherit the layout qualifier from the interface block. Work around this limitation by explicitly stating the layout qualifier on both the interface block and every single member inside of that block.
2016-02-29Revert "Merge pull request #3578 from Armada651/forced-slow-depth"Jules Blok
This reverts commit e2a1a085b6a9f36b23128872de85da727d231882, reversing changes made to 2aea549eef85ba165672c8355d0e90781d805efd.
2016-02-08VideoConfig: Replace FastDepthCalc by ForcedSlowDepth.Jules Blok
Fast depth is now more accurate than slow depth and should always be used. The option will be kept in a different form as it is still used as a hack to fix some games. Also, the slow depth code path will still be relied upon by cards that don't support GL_ARB_clip_control.
2016-01-25VideoBackend: Remove extraneous shifts from indirect texture lookupsJeffrey Pfau
2016-01-18Merge pull request #3523 from lioncash/videoPierre Bourdon
VideoCommon: Header cleanup
2016-01-17VideoCommon: Header cleanupLioncash
Also remedies places where the video backends and core rely on things being indirectly included.
2016-01-15PixelShaderGen: Use bitwise AND for wrapping indirect texture coordinatesStenzek
(x % y) is not defined in GLSL when sign(x) != sign(y). This also has the added benefit of behaving the same as sampler wrapping modes, in regards to negative inputs.