dolphin/Source/Core/VideoCommon
Pokechu22 8129874d11 Sanitize and use increased precision when normalizing light directions
This normalization was added in 02ac5e95c8, and changed to use floats in 4bf031c064.  The conversion to floats means that sometimes there is insufficient precision for the normalization process, which results in values of NaN or infinity.  Performing the whole process with doubles prevents that, but games also sometimes set the values to NaN or infinity directly (possibly accidentally due to the values not being initialized due to them not being used in the current configuration?).

The version of Mesa currently in use on FifoCI (20.3.5) has issues with NaN.  Although this bug has been fixed (b3f3287eac in 21.2.0), FifoCI is stuck with the older version.

This change may or may not be incorrect, but it should result in the same behavior as already present in Dolphin, while working around the Mesa bug.
2022-08-04 08:52:44 -07:00
..
GraphicsModSystem Android: Add graphics mods support to CheatsActivity 2022-07-23 21:58:45 +02:00
AbstractFramebuffer.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
AbstractFramebuffer.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
AbstractPipeline.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
AbstractShader.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
AbstractStagingTexture.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
AbstractStagingTexture.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
AbstractTexture.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
AbstractTexture.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
AsyncRequests.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
AsyncRequests.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
AsyncShaderCompiler.cpp Allow to interrupt shader precompilation by stopping emulation 2022-06-10 17:11:32 +02:00
AsyncShaderCompiler.h Allow to interrupt shader precompilation by stopping emulation 2022-06-10 17:11:32 +02:00
BoundingBox.cpp Common: Refactor PointerWrap 2022-05-25 13:06:41 -07:00
BoundingBox.h VideoCommon: Abstract bounding box 2021-10-04 15:51:24 -04:00
BPFunctions.cpp VideoCommon: Rework scissor handling 2022-04-16 10:26:11 -07:00
BPFunctions.h Resolve GCC Warnings 2022-06-30 15:26:48 -05:00
BPMemory.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
BPMemory.h Merge pull request #10747 from tellowkrinkle/LateUIDFixup 2022-07-17 00:43:16 -04:00
BPStructs.cpp Create dedicated enum for EFB/XFB gamma correction 2022-07-15 12:29:40 -07:00
BPStructs.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
CMakeLists.txt replace libpng with libspng 2022-07-25 18:32:16 -07:00
CommandProcessor.cpp CommandProcessor: Add FIFO_BP_LO/HI to directly_mapped_vars 2022-02-15 22:34:31 -08:00
CommandProcessor.h CommandProcessor: Remove redundant GATHER_PIPE_SIZE constant 2022-02-12 16:17:03 -08:00
ConstantManager.h VideoCommon: Handle emboss texgen with only a single normal 2022-04-22 16:54:38 -07:00
CPMemory.cpp Common: Refactor PointerWrap 2022-05-25 13:06:41 -07:00
CPMemory.h Rename CP and XF normal component count enums and update their descriptions 2022-05-18 14:43:14 -07:00
DataReader.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
DriverDetails.cpp VideoBackends:Metal: Use DriverDetails for bugs 2022-07-21 20:44:19 -05:00
DriverDetails.h VideoBackends:Metal: Use DriverDetails for bugs 2022-07-21 20:44:19 -05:00
Fifo.cpp Common: Refactor PointerWrap 2022-05-25 13:06:41 -07:00
Fifo.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
FPSCounter.cpp Common::Timer: use chrono::steady_clock internally 2022-08-02 22:24:06 -07:00
FPSCounter.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
FramebufferManager.cpp VideoBackends:Metal: MSAA support 2022-07-21 20:44:19 -05:00
FramebufferManager.h VideoBackends:Metal: MSAA support 2022-07-21 20:44:19 -05:00
FramebufferShaderGen.cpp VideoBackends:Metal: MSAA support 2022-07-21 20:44:19 -05:00
FramebufferShaderGen.h VideoBackends:Metal: MSAA support 2022-07-21 20:44:19 -05:00
FrameDump.cpp Common: Refactor PointerWrap 2022-05-25 13:06:41 -07:00
FrameDump.h Fix all uninitialized variable warnings (C26495) 2021-10-13 12:32:16 -07:00
FreeLookCamera.cpp Common: Refactor PointerWrap 2022-05-25 13:06:41 -07:00
FreeLookCamera.h VideoCommon: update Free Look camera's 'FieldOfView' function to 'FieldOfViewMultiplier' to better reflect usage 2021-10-08 18:17:20 -05:00
GeometryShaderGen.cpp Merge pull request #10819 from Dentomologist/fix_shader_compilation_warnings 2022-07-08 18:46:29 -04:00
GeometryShaderGen.h Fix ambiguous uses of format_to 2022-01-13 11:11:08 -08:00
GeometryShaderManager.cpp Common: Refactor PointerWrap 2022-05-25 13:06:41 -07:00
GeometryShaderManager.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
GXPipelineTypes.h VideoCommon: Better driver bug handling 2022-07-13 21:51:24 -05:00
HiresTextures.cpp Timer: protect usages of ms timers from rollover 2022-08-02 22:24:06 -07:00
HiresTextures.h VideoCommon: trigger mod calls in TextureCacheBase (efb/xfb calls), VertexManagerBase (draw calls), and VertexShaderManager (projection calls) 2022-06-27 18:20:52 -05:00
HiresTextures_DDSLoader.cpp IOFile: Make origin parameter to Seek() an enum class. 2022-01-29 06:49:21 +01:00
IndexGenerator.cpp Convert OpcodeDecoder::Opcode and OpcodeDecoder::Primitive to enum class 2021-12-18 12:51:56 -08:00
IndexGenerator.h Convert OpcodeDecoder::Opcode and OpcodeDecoder::Primitive to enum class 2021-12-18 12:51:56 -08:00
LightingShaderGen.cpp VideoCommon: Rename norm0/norm1/norm2 to normal/tangent/binormal 2022-04-22 16:54:36 -07:00
LightingShaderGen.h LightingShaderGen: Make s_lighting_struct not inline 2021-12-22 15:17:52 -08:00
LookUpTables.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
NativeVertexFormat.h Common/Hash: use zlib-ng for adler32. small cleanups. 2022-08-01 10:07:27 -07:00
NetPlayChatUI.cpp Externals: Update imgui to 1.85 2021-10-26 15:07:57 -07:00
NetPlayChatUI.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
NetPlayGolfUI.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
NetPlayGolfUI.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
OnScreenDisplay.cpp Timer: protect usages of ms timers from rollover 2022-08-02 22:24:06 -07:00
OnScreenDisplay.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
OpcodeDecoding.cpp VideoCommon: Move logging/seen check for unknown opcodes into CommandProcessor 2022-01-22 22:04:15 -08:00
OpcodeDecoding.h VideoCommon: Move logging/seen check for unknown opcodes into CommandProcessor 2022-01-22 22:04:15 -08:00
PerfQueryBase.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
PerfQueryBase.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
PixelEngine.cpp PixelEngine: Convert to BitField and enum class 2022-03-29 15:34:43 -07:00
PixelEngine.h PixelEngine: Convert to BitField and enum class 2022-03-29 15:34:43 -07:00
PixelShaderGen.cpp VideoBackends:Metal: Use DriverDetails for bugs 2022-07-21 20:44:19 -05:00
PixelShaderGen.h VideoCommon: Better driver bug handling 2022-07-13 21:51:24 -05:00
PixelShaderManager.cpp VideoCommon: Better driver bug handling 2022-07-13 21:51:24 -05:00
PixelShaderManager.h VideoCommon: Expose SamplerState to shaders 2021-11-17 20:04:34 -08:00
PostProcessing.cpp Common::Timer: use chrono::steady_clock internally 2022-08-02 22:24:06 -07:00
PostProcessing.h VideoCommon: Convert OptionType to enum class 2022-02-17 10:03:08 -08:00
RenderBase.cpp Common::Timer: use chrono::steady_clock internally 2022-08-02 22:24:06 -07:00
RenderBase.h VideoBackends: Add Metal renderer 2022-07-21 20:44:19 -05:00
RenderState.cpp VideoCommon: Fix IsDualSrc check for dst blend factors 2022-07-17 20:50:53 -05:00
RenderState.h VideoCommon: Remove dstalpha from BlendingState 2022-07-15 15:31:47 -05:00
sfont.inc Use fmt::to_string for texture format overlay 2022-07-15 12:29:40 -07:00
ShaderCache.cpp VideoCommon: Always use fbfetch in ubershaders if available 2022-07-15 15:31:47 -05:00
ShaderCache.h VideoCommon: Reduce duplicates of non-palette-requiring texture decode shaders 2022-06-16 02:08:45 -05:00
ShaderGenCommon.cpp VideoBackends: Add Metal renderer 2022-07-21 20:44:19 -05:00
ShaderGenCommon.h D3D / VideoCommon: generate HLSL from SPIRV 2022-06-24 18:09:53 -05:00
Spirv.cpp VideoBackends: Add Metal renderer 2022-07-21 20:44:19 -05:00
Spirv.h VideoBackends / VideoCommon: refactor Vulkan to use new SPIRV functionality 2022-06-24 18:09:53 -05:00
Statistics.cpp Resolve GCC Warnings 2022-06-30 15:26:48 -05:00
Statistics.h Implement ImGui window for scissor rectangles 2022-04-16 12:35:00 -07:00
TextureCacheBase.cpp Common/Hash: use zlib-ng for adler32. small cleanups. 2022-08-01 10:07:27 -07:00
TextureCacheBase.h Restructure parameters to TetxureConverterShaderGen/TextureConversionShader 2022-07-16 00:07:10 -07:00
TextureConfig.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
TextureConfig.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
TextureConversionShader.cpp VideoBackends: Add Metal renderer 2022-07-21 20:44:19 -05:00
TextureConversionShader.h VideoCommon: Reduce duplicates of non-palette-requiring texture decode shaders 2022-06-16 02:08:45 -05:00
TextureConverterShaderGen.cpp Fix OpenGL error on M1 Mac. 2022-07-17 08:54:39 -04:00
TextureConverterShaderGen.h Restructure parameters to TetxureConverterShaderGen/TextureConversionShader 2022-07-16 00:07:10 -07:00
TextureDecoder.h VideoCommon: add function to check whether TextureFormat is a valid value 2022-06-26 00:45:13 -05:00
TextureDecoder_Common.cpp Add notes about precision of YUV->RGB conversion factors for XFB 2022-07-16 00:07:10 -07:00
TextureDecoder_Generic.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
TextureDecoder_Util.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
TextureDecoder_x64.cpp Remove casts to integers for texture and EFB formats 2022-07-15 12:29:40 -07:00
TextureInfo.cpp VideoCommon: add support for setting and getting the stage from the texture info 2022-06-26 00:45:13 -05:00
TextureInfo.h VideoCommon: add support for setting and getting the stage from the texture info 2022-06-26 00:45:13 -05:00
TMEM.cpp Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
TMEM.h Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
UberShaderCommon.cpp D3D / VideoCommon: generate HLSL from SPIRV 2022-06-24 18:09:53 -05:00
UberShaderCommon.h VideoCommon: Allow BitfieldExtract in specialized shaders 2021-11-17 20:04:33 -08:00
UberShaderPixel.cpp VideoBackends: Add Metal renderer 2022-07-21 20:44:19 -05:00
UberShaderPixel.h VideoCommon: Better driver bug handling 2022-07-13 21:51:24 -05:00
UberShaderVertex.cpp D3D / VideoCommon: generate HLSL from SPIRV 2022-06-24 18:09:53 -05:00
UberShaderVertex.h VideoCommon: Name ubershaders 2022-06-16 02:08:45 -05:00
VertexLoader.cpp Rename CP and XF normal component count enums and update their descriptions 2022-05-18 14:43:14 -07:00
VertexLoader.h VertexLoader: Convert count register to remaining register 2022-04-22 16:54:38 -07:00
VertexLoader_Color.cpp VertexLoader_Color: Use Common::swap24 2021-12-18 15:21:48 -08:00
VertexLoader_Color.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
VertexLoader_Normal.cpp Rename CP and XF normal component count enums and update their descriptions 2022-05-18 14:43:14 -07:00
VertexLoader_Normal.h VertexLoader: Convert to EnumMap 2021-12-18 12:51:55 -08:00
VertexLoader_Position.cpp VertexLoader: Convert count register to remaining register 2022-04-22 16:54:38 -07:00
VertexLoader_Position.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
VertexLoader_TextCoord.cpp Create and use CPArray enum class 2021-12-18 12:51:56 -08:00
VertexLoader_TextCoord.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
VertexLoaderARM64.cpp Rename CP and XF normal component count enums and update their descriptions 2022-05-18 14:43:14 -07:00
VertexLoaderARM64.h Create and use CPArray enum class 2021-12-18 12:51:56 -08:00
VertexLoaderBase.cpp Rename CP and XF normal component count enums and update their descriptions 2022-05-18 14:43:14 -07:00
VertexLoaderBase.h Fix all uninitialized variable warnings (C26495) 2021-10-13 12:32:16 -07:00
VertexLoaderManager.cpp Convert CP/XF matrix indices mismatch panic alert to a warning 2022-07-23 09:01:22 -07:00
VertexLoaderManager.h VideoCommon: Handle emboss texgen with only a single normal 2022-04-22 16:54:38 -07:00
VertexLoaderUtils.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
VertexLoaderX64.cpp CPUDetect: improve win/arm64 support 2022-07-25 21:21:11 -07:00
VertexLoaderX64.h Create and use CPArray enum class 2021-12-18 12:51:56 -08:00
VertexManagerBase.cpp Merge pull request #10777 from tellowkrinkle/EFBFlush 2022-07-13 19:45:31 -04:00
VertexManagerBase.h Merge pull request #10777 from tellowkrinkle/EFBFlush 2022-07-13 19:45:31 -04:00
VertexShaderGen.cpp D3D / VideoCommon: generate HLSL from SPIRV 2022-06-24 18:09:53 -05:00
VertexShaderGen.h VideoCommon: Rename norm0/norm1/norm2 to normal/tangent/binormal 2022-04-22 16:54:36 -07:00
VertexShaderManager.cpp Sanitize and use increased precision when normalizing light directions 2022-08-04 08:52:44 -07:00
VertexShaderManager.h VideoCommon: trigger mod calls in TextureCacheBase (efb/xfb calls), VertexManagerBase (draw calls), and VertexShaderManager (projection calls) 2022-06-27 18:20:52 -05:00
VideoBackendBase.cpp VideoBackends: Add Metal renderer 2022-07-21 20:44:19 -05:00
VideoBackendBase.h VI: Implement post-scanout XFB output 2021-08-03 23:37:50 -04:00
VideoCommon.h VideoBackends: Add Metal renderer 2022-07-21 20:44:19 -05:00
VideoConfig.cpp CPUDetect: improve win/arm64 support 2022-07-25 21:21:11 -07:00
VideoConfig.h VideoBackends:Metal: MSAA support 2022-07-21 20:44:19 -05:00
VideoState.cpp Common: Refactor PointerWrap 2022-05-25 13:06:41 -07:00
VideoState.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
XFMemory.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
XFMemory.h Rename CP and XF normal component count enums and update their descriptions 2022-05-18 14:43:14 -07:00
XFStructs.cpp Fix non-constexpr format strings 2022-01-13 11:11:08 -08:00
XFStructs.h Refactor OpcodeDecoding and FIFO analyzer to use callbacks 2021-12-18 15:21:36 -08:00