mirror of
				https://github.com/hedge-dev/XenosRecomp.git
				synced 2025-10-30 07:12:17 +00:00 
			
		
		
		
	Reverse Z in vertex shader.
This commit is contained in:
		
							parent
							
								
									b7c0372246
								
							
						
					
					
						commit
						1306e0b032
					
				
					 3 changed files with 8 additions and 6 deletions
				
			
		|  | @ -23,6 +23,7 @@ IDxcBlob* DxcCompiler::compile(const std::string& shaderSource, bool isPixelShad | |||
|     args[argCount++] = isPixelShader ? L"-T ps_6_0" : L"-T vs_6_0"; | ||||
|     args[argCount++] = L"-HV 2021"; | ||||
|     args[argCount++] = L"-all-resources-bound"; | ||||
|     args[argCount++] = L"-ffinite-math-only"; | ||||
| 
 | ||||
|     if (compileSpirv) | ||||
|     { | ||||
|  |  | |||
|  | @ -20,6 +20,7 @@ struct PushConstants | |||
| #define g_SwappedTexcoords         vk::RawBufferLoad<uint>(g_PushConstants.SharedConstants + 268) | ||||
| #define g_InputLayoutFlags         vk::RawBufferLoad<uint>(g_PushConstants.SharedConstants + 272) | ||||
| #define g_EnableGIBicubicFiltering vk::RawBufferLoad<bool>(g_PushConstants.SharedConstants + 276) | ||||
| #define g_ReverseZ                 vk::RawBufferLoad<bool>(g_PushConstants.SharedConstants + 280) | ||||
| 
 | ||||
| #else | ||||
| 
 | ||||
|  | @ -29,7 +30,8 @@ struct PushConstants | |||
|     uint g_Booleans : packoffset(c16.z); \ | ||||
|     uint g_SwappedTexcoords : packoffset(c16.w); \ | ||||
|     uint g_InputLayoutFlags : packoffset(c17.x); \ | ||||
|     bool g_EnableGIBicubicFiltering : packoffset(c17.y) | ||||
|     bool g_EnableGIBicubicFiltering : packoffset(c17.y); \ | ||||
|     bool g_ReverseZ : packoffset(c17.z) | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
|  |  | |||
|  | @ -245,14 +245,11 @@ void ShaderRecompiler::recompile(const TextureFetchInstruction& instr, bool bicu | |||
| 
 | ||||
|     std::string constName; | ||||
|     const char* constNamePtr = nullptr; | ||||
|     bool subtractFromOne = false; | ||||
| 
 | ||||
|     auto findResult = samplers.find(instr.constIndex); | ||||
|     if (findResult != samplers.end()) | ||||
|     { | ||||
|         constNamePtr = findResult->second; | ||||
|         subtractFromOne = strcmp(constNamePtr, "sampZBuffer") == 0 || | ||||
|             strcmp(constNamePtr, "g_DepthSampler") == 0; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|  | @ -277,8 +274,6 @@ void ShaderRecompiler::recompile(const TextureFetchInstruction& instr, bool bicu | |||
|     { | ||||
|     case FetchOpcode::TextureFetch: | ||||
|     { | ||||
|         if (subtractFromOne) | ||||
|             out += "1.0 - "; | ||||
|         out += "tfetch"; | ||||
|         break; | ||||
|     } | ||||
|  | @ -1703,6 +1698,10 @@ void ShaderRecompiler::recompile(const uint8_t* shaderData, const std::string_vi | |||
|                     indent(); | ||||
|                     out += '}'; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     out += "[flatten] if (g_ReverseZ) oPos.z = oPos.w - oPos.z;"; | ||||
|                 } | ||||
| 
 | ||||
|                 if (simpleControlFlow) | ||||
|                 { | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Skyth
						Skyth