Bläddra i källkod

WIP: macOS port
- Any non-high-end shaders are now compiled with GLSL version 4.1

BearishSun 7 år sedan
förälder
incheckning
1726992f76
84 ändrade filer med 61 tillägg och 27 borttagningar
  1. BIN
      Data/Editor/Shaders/ClearHandleAlpha.bsl.asset
  2. BIN
      Data/Editor/Shaders/DockDropOverlay.bsl.asset
  3. BIN
      Data/Editor/Shaders/GizmoPicking.bsl.asset
  4. BIN
      Data/Editor/Shaders/GizmoPickingAlpha.bsl.asset
  5. BIN
      Data/Editor/Shaders/IconGizmo.bsl.asset
  6. BIN
      Data/Editor/Shaders/LineGizmo.bsl.asset
  7. BIN
      Data/Editor/Shaders/LineHandle.bsl.asset
  8. BIN
      Data/Editor/Shaders/PickingAlphaCullCCW.bsl.asset
  9. BIN
      Data/Editor/Shaders/PickingAlphaCullCW.bsl.asset
  10. BIN
      Data/Editor/Shaders/PickingAlphaCullNone.bsl.asset
  11. BIN
      Data/Editor/Shaders/PickingCullCCW.bsl.asset
  12. BIN
      Data/Editor/Shaders/PickingCullCW.bsl.asset
  13. BIN
      Data/Editor/Shaders/PickingCullNone.bsl.asset
  14. BIN
      Data/Editor/Shaders/SceneGrid.bsl.asset
  15. BIN
      Data/Editor/Shaders/Selection.bsl.asset
  16. BIN
      Data/Editor/Shaders/SolidGizmo.bsl.asset
  17. BIN
      Data/Editor/Shaders/SolidHandle.bsl.asset
  18. BIN
      Data/Editor/Shaders/TextGizmo.bsl.asset
  19. BIN
      Data/Editor/Shaders/WireGizmo.bsl.asset
  20. BIN
      Data/Engine/Includes/NormalVertexInput.bslinc.asset
  21. BIN
      Data/Engine/Includes/SkinnedVertexInput.bslinc.asset
  22. BIN
      Data/Engine/Includes/Surface.bslinc.asset
  23. BIN
      Data/Engine/Shaders/Blit.bsl.asset
  24. BIN
      Data/Engine/Shaders/Clear.bsl.asset
  25. BIN
      Data/Engine/Shaders/DebugDraw.bsl.asset
  26. BIN
      Data/Engine/Shaders/Default.bsl.asset
  27. BIN
      Data/Engine/Shaders/DeferredDirectionalLight.bsl.asset
  28. BIN
      Data/Engine/Shaders/DeferredIBLFinalize.bsl.asset
  29. BIN
      Data/Engine/Shaders/DeferredIBLProbe.bsl.asset
  30. BIN
      Data/Engine/Shaders/DeferredIBLSetup.bsl.asset
  31. BIN
      Data/Engine/Shaders/DeferredIBLSky.bsl.asset
  32. BIN
      Data/Engine/Shaders/DeferredPointLight.bsl.asset
  33. BIN
      Data/Engine/Shaders/Diffuse.bsl.asset
  34. BIN
      Data/Engine/Shaders/FlatFramebufferToTexture.bsl.asset
  35. BIN
      Data/Engine/Shaders/IrradianceAccumulateCubeSH.bsl.asset
  36. BIN
      Data/Engine/Shaders/IrradianceAccumulateSH.bsl.asset
  37. BIN
      Data/Engine/Shaders/IrradianceComputeSH.bsl.asset
  38. BIN
      Data/Engine/Shaders/IrradianceComputeSHFrag.bsl.asset
  39. BIN
      Data/Engine/Shaders/IrradianceEvaluate.bsl.asset
  40. BIN
      Data/Engine/Shaders/IrradianceProjectSH.bsl.asset
  41. BIN
      Data/Engine/Shaders/IrradianceReduceSH.bsl.asset
  42. BIN
      Data/Engine/Shaders/LightGridLLCreation.bsl.asset
  43. BIN
      Data/Engine/Shaders/LightGridLLReduction.bsl.asset
  44. BIN
      Data/Engine/Shaders/MSAACoverage.bsl.asset
  45. BIN
      Data/Engine/Shaders/MSAACoverageStencil.bsl.asset
  46. BIN
      Data/Engine/Shaders/PPBuildHiZ.bsl.asset
  47. BIN
      Data/Engine/Shaders/PPCreateTonemapLUT.bsl.asset
  48. BIN
      Data/Engine/Shaders/PPDownsample.bsl.asset
  49. BIN
      Data/Engine/Shaders/PPEncodeDepth.bsl.asset
  50. BIN
      Data/Engine/Shaders/PPEyeAdaptHistogram.bsl.asset
  51. BIN
      Data/Engine/Shaders/PPEyeAdaptHistogramReduce.bsl.asset
  52. BIN
      Data/Engine/Shaders/PPEyeAdaptation.bsl.asset
  53. BIN
      Data/Engine/Shaders/PPEyeAdaptationBasic.bsl.asset
  54. BIN
      Data/Engine/Shaders/PPEyeAdaptationBasicSetup.bsl.asset
  55. BIN
      Data/Engine/Shaders/PPFXAA.bsl.asset
  56. BIN
      Data/Engine/Shaders/PPGaussianBlur.bsl.asset
  57. BIN
      Data/Engine/Shaders/PPGaussianDOFCombine.bsl.asset
  58. BIN
      Data/Engine/Shaders/PPGaussianDOFSeparate.bsl.asset
  59. BIN
      Data/Engine/Shaders/PPSSAO.bsl.asset
  60. BIN
      Data/Engine/Shaders/PPSSAOBlur.bsl.asset
  61. BIN
      Data/Engine/Shaders/PPSSAODownsample.bsl.asset
  62. BIN
      Data/Engine/Shaders/PPSSRResolve.bsl.asset
  63. BIN
      Data/Engine/Shaders/PPSSRStencil.bsl.asset
  64. BIN
      Data/Engine/Shaders/PPSSRTrace.bsl.asset
  65. BIN
      Data/Engine/Shaders/PPTonemapping.bsl.asset
  66. BIN
      Data/Engine/Shaders/ReflectionCubeDownsample.bsl.asset
  67. BIN
      Data/Engine/Shaders/ReflectionCubeImportanceSample.bsl.asset
  68. BIN
      Data/Engine/Shaders/ShadowDepthCube.bsl.asset
  69. BIN
      Data/Engine/Shaders/ShadowDepthDirectional.bsl.asset
  70. BIN
      Data/Engine/Shaders/ShadowDepthNormal.bsl.asset
  71. BIN
      Data/Engine/Shaders/ShadowProject.bsl.asset
  72. BIN
      Data/Engine/Shaders/ShadowProjectOmni.bsl.asset
  73. BIN
      Data/Engine/Shaders/ShadowProjectStencil.bsl.asset
  74. BIN
      Data/Engine/Shaders/Skybox.bsl.asset
  75. BIN
      Data/Engine/Shaders/SpriteImageAlpha.bsl.asset
  76. BIN
      Data/Engine/Shaders/SpriteImageNoAlpha.bsl.asset
  77. BIN
      Data/Engine/Shaders/SpriteLine.bsl.asset
  78. BIN
      Data/Engine/Shaders/SpriteText.bsl.asset
  79. BIN
      Data/Engine/Shaders/TetrahedraRender.bsl.asset
  80. BIN
      Data/Engine/Shaders/TiledDeferredImageBasedLighting.bsl.asset
  81. BIN
      Data/Engine/Shaders/TiledDeferredLighting.bsl.asset
  82. BIN
      Data/Engine/Shaders/Transparent.bsl.asset
  83. 2 2
      Data/Raw/Engine/Shaders/PPSSAO.bsl
  84. 59 25
      Source/BansheeSL/BsSLFXCompiler.cpp

BIN
Data/Editor/Shaders/ClearHandleAlpha.bsl.asset


BIN
Data/Editor/Shaders/DockDropOverlay.bsl.asset


BIN
Data/Editor/Shaders/GizmoPicking.bsl.asset


BIN
Data/Editor/Shaders/GizmoPickingAlpha.bsl.asset


BIN
Data/Editor/Shaders/IconGizmo.bsl.asset


BIN
Data/Editor/Shaders/LineGizmo.bsl.asset


BIN
Data/Editor/Shaders/LineHandle.bsl.asset


BIN
Data/Editor/Shaders/PickingAlphaCullCCW.bsl.asset


BIN
Data/Editor/Shaders/PickingAlphaCullCW.bsl.asset


BIN
Data/Editor/Shaders/PickingAlphaCullNone.bsl.asset


BIN
Data/Editor/Shaders/PickingCullCCW.bsl.asset


BIN
Data/Editor/Shaders/PickingCullCW.bsl.asset


BIN
Data/Editor/Shaders/PickingCullNone.bsl.asset


BIN
Data/Editor/Shaders/SceneGrid.bsl.asset


BIN
Data/Editor/Shaders/Selection.bsl.asset


BIN
Data/Editor/Shaders/SolidGizmo.bsl.asset


BIN
Data/Editor/Shaders/SolidHandle.bsl.asset


BIN
Data/Editor/Shaders/TextGizmo.bsl.asset


BIN
Data/Editor/Shaders/WireGizmo.bsl.asset


BIN
Data/Engine/Includes/NormalVertexInput.bslinc.asset


BIN
Data/Engine/Includes/SkinnedVertexInput.bslinc.asset


BIN
Data/Engine/Includes/Surface.bslinc.asset


BIN
Data/Engine/Shaders/Blit.bsl.asset


BIN
Data/Engine/Shaders/Clear.bsl.asset


BIN
Data/Engine/Shaders/DebugDraw.bsl.asset


BIN
Data/Engine/Shaders/Default.bsl.asset


BIN
Data/Engine/Shaders/DeferredDirectionalLight.bsl.asset


BIN
Data/Engine/Shaders/DeferredIBLFinalize.bsl.asset


BIN
Data/Engine/Shaders/DeferredIBLProbe.bsl.asset


BIN
Data/Engine/Shaders/DeferredIBLSetup.bsl.asset


BIN
Data/Engine/Shaders/DeferredIBLSky.bsl.asset


BIN
Data/Engine/Shaders/DeferredPointLight.bsl.asset


BIN
Data/Engine/Shaders/Diffuse.bsl.asset


BIN
Data/Engine/Shaders/FlatFramebufferToTexture.bsl.asset


BIN
Data/Engine/Shaders/IrradianceAccumulateCubeSH.bsl.asset


BIN
Data/Engine/Shaders/IrradianceAccumulateSH.bsl.asset


BIN
Data/Engine/Shaders/IrradianceComputeSH.bsl.asset


BIN
Data/Engine/Shaders/IrradianceComputeSHFrag.bsl.asset


BIN
Data/Engine/Shaders/IrradianceEvaluate.bsl.asset


BIN
Data/Engine/Shaders/IrradianceProjectSH.bsl.asset


BIN
Data/Engine/Shaders/IrradianceReduceSH.bsl.asset


BIN
Data/Engine/Shaders/LightGridLLCreation.bsl.asset


BIN
Data/Engine/Shaders/LightGridLLReduction.bsl.asset


BIN
Data/Engine/Shaders/MSAACoverage.bsl.asset


BIN
Data/Engine/Shaders/MSAACoverageStencil.bsl.asset


BIN
Data/Engine/Shaders/PPBuildHiZ.bsl.asset


BIN
Data/Engine/Shaders/PPCreateTonemapLUT.bsl.asset


BIN
Data/Engine/Shaders/PPDownsample.bsl.asset


BIN
Data/Engine/Shaders/PPEncodeDepth.bsl.asset


BIN
Data/Engine/Shaders/PPEyeAdaptHistogram.bsl.asset


BIN
Data/Engine/Shaders/PPEyeAdaptHistogramReduce.bsl.asset


BIN
Data/Engine/Shaders/PPEyeAdaptation.bsl.asset


BIN
Data/Engine/Shaders/PPEyeAdaptationBasic.bsl.asset


BIN
Data/Engine/Shaders/PPEyeAdaptationBasicSetup.bsl.asset


BIN
Data/Engine/Shaders/PPFXAA.bsl.asset


BIN
Data/Engine/Shaders/PPGaussianBlur.bsl.asset


BIN
Data/Engine/Shaders/PPGaussianDOFCombine.bsl.asset


BIN
Data/Engine/Shaders/PPGaussianDOFSeparate.bsl.asset


BIN
Data/Engine/Shaders/PPSSAO.bsl.asset


BIN
Data/Engine/Shaders/PPSSAOBlur.bsl.asset


BIN
Data/Engine/Shaders/PPSSAODownsample.bsl.asset


BIN
Data/Engine/Shaders/PPSSRResolve.bsl.asset


BIN
Data/Engine/Shaders/PPSSRStencil.bsl.asset


BIN
Data/Engine/Shaders/PPSSRTrace.bsl.asset


BIN
Data/Engine/Shaders/PPTonemapping.bsl.asset


BIN
Data/Engine/Shaders/ReflectionCubeDownsample.bsl.asset


BIN
Data/Engine/Shaders/ReflectionCubeImportanceSample.bsl.asset


BIN
Data/Engine/Shaders/ShadowDepthCube.bsl.asset


BIN
Data/Engine/Shaders/ShadowDepthDirectional.bsl.asset


BIN
Data/Engine/Shaders/ShadowDepthNormal.bsl.asset


BIN
Data/Engine/Shaders/ShadowProject.bsl.asset


BIN
Data/Engine/Shaders/ShadowProjectOmni.bsl.asset


BIN
Data/Engine/Shaders/ShadowProjectStencil.bsl.asset


BIN
Data/Engine/Shaders/Skybox.bsl.asset


BIN
Data/Engine/Shaders/SpriteImageAlpha.bsl.asset


BIN
Data/Engine/Shaders/SpriteImageNoAlpha.bsl.asset


BIN
Data/Engine/Shaders/SpriteLine.bsl.asset


BIN
Data/Engine/Shaders/SpriteText.bsl.asset


BIN
Data/Engine/Shaders/TetrahedraRender.bsl.asset


BIN
Data/Engine/Shaders/TiledDeferredImageBasedLighting.bsl.asset


BIN
Data/Engine/Shaders/TiledDeferredLighting.bsl.asset


BIN
Data/Engine/Shaders/Transparent.bsl.asset


+ 2 - 2
Data/Raw/Engine/Shaders/PPSSAO.bsl

@@ -268,8 +268,8 @@ technique PPSSAO
 			// Note: Ideally the blur would be 4x4 since the pattern is 4x4
 			// Note: Ideally the blur would be 4x4 since the pattern is 4x4
 			
 			
 			float4 myVal = float4(output, viewNormal);
 			float4 myVal = float4(output, viewNormal);
-			float4 dX = ddx_fine(myVal);
-			float4 dY = ddy_fine(myVal);
+			float4 dX = ddx(myVal);
+			float4 dY = ddy(myVal);
 			
 			
 			int2 mod = (int2)(pixelPos.xy) % 2;
 			int2 mod = (int2)(pixelPos.xy) % 2;
 			float4 horzVal = myVal - dX * (mod.x * 2 - 1);
 			float4 horzVal = myVal - dX * (mod.x * 2 - 1);

+ 59 - 25
Source/BansheeSL/BsSLFXCompiler.cpp

@@ -520,12 +520,21 @@ namespace bs
 		}
 		}
 	}
 	}
 
 
-	String crossCompile(const String& hlsl, GpuProgramType type, bool vulkan, bool optionalEntry, UINT32& startBindingSlot,
-		SHADER_DESC* shaderDesc = nullptr, Vector<GpuProgramType>* detectedTypes = nullptr)
+	/** Types of supported code output when cross compiling HLSL to GLSL. */
+	enum class CrossCompileOutput
+	{
+		GLSL45,
+		GLSL41,
+		VKSL45
+	};
+
+	String crossCompile(const String& hlsl, GpuProgramType type, CrossCompileOutput outputType, bool optionalEntry, 
+		UINT32& startBindingSlot, SHADER_DESC* shaderDesc = nullptr, Vector<GpuProgramType>* detectedTypes = nullptr)
 	{
 	{
 		SPtr<StringStream> input = bs_shared_ptr_new<StringStream>();
 		SPtr<StringStream> input = bs_shared_ptr_new<StringStream>();
 
 
-		if (vulkan)
+		bool isVulkan = outputType == CrossCompileOutput::VKSL45;
+		if (isVulkan)
 			*input << "#define VULKAN 1" << std::endl;
 			*input << "#define VULKAN 1" << std::endl;
 		else
 		else
 			*input << "#define OPENGL 1" << std::endl;
 			*input << "#define OPENGL 1" << std::endl;
@@ -571,7 +580,7 @@ namespace bs
 
 
 		Xsc::ShaderOutput outputDesc;
 		Xsc::ShaderOutput outputDesc;
 		outputDesc.sourceCode = &output;
 		outputDesc.sourceCode = &output;
-		outputDesc.options.autoBinding = vulkan;
+		outputDesc.options.autoBinding = isVulkan;
 		outputDesc.options.autoBindingStartSlot = startBindingSlot;
 		outputDesc.options.autoBindingStartSlot = startBindingSlot;
 		outputDesc.options.separateShaders = true;
 		outputDesc.options.separateShaders = true;
 		outputDesc.options.separateSamplers = false;
 		outputDesc.options.separateSamplers = false;
@@ -580,10 +589,19 @@ namespace bs
 		outputDesc.nameMangling.useAlwaysSemantics = true;
 		outputDesc.nameMangling.useAlwaysSemantics = true;
 		outputDesc.nameMangling.renameBufferFields = true;
 		outputDesc.nameMangling.renameBufferFields = true;
 
 
-		if (vulkan)
-			outputDesc.shaderVersion = Xsc::OutputShaderVersion::VKSL450;
-		else
+		switch(outputType)
+		{
+		case CrossCompileOutput::GLSL45: 
 			outputDesc.shaderVersion = Xsc::OutputShaderVersion::GLSL450;
 			outputDesc.shaderVersion = Xsc::OutputShaderVersion::GLSL450;
+			break;
+		case CrossCompileOutput::GLSL41: 
+			outputDesc.shaderVersion = Xsc::OutputShaderVersion::GLSL410;
+			break;
+		case CrossCompileOutput::VKSL45: 
+			outputDesc.shaderVersion = Xsc::OutputShaderVersion::VKSL450;
+			break;
+		default: ;
+		}
 
 
 		XscLog log;
 		XscLog log;
 		Xsc::Reflection::ReflectionData reflectionData;
 		Xsc::Reflection::ReflectionData reflectionData;
@@ -663,15 +681,15 @@ namespace bs
 	}
 	}
 
 
 	// Convert HLSL code to GLSL
 	// Convert HLSL code to GLSL
-	String HLSLtoGLSL(const String& hlsl, GpuProgramType type, bool vulkan, UINT32& startBindingSlot)
+	String HLSLtoGLSL(const String& hlsl, GpuProgramType type, CrossCompileOutput outputType, UINT32& startBindingSlot)
 	{
 	{
-		return crossCompile(hlsl, type, vulkan, false, startBindingSlot);
+		return crossCompile(hlsl, type, outputType, false, startBindingSlot);
 	}
 	}
 
 
 	void reflectHLSL(const String& hlsl, SHADER_DESC& shaderDesc, Vector<GpuProgramType>& entryPoints)
 	void reflectHLSL(const String& hlsl, SHADER_DESC& shaderDesc, Vector<GpuProgramType>& entryPoints)
 	{
 	{
 		UINT32 dummy = 0;
 		UINT32 dummy = 0;
-		crossCompile(hlsl, GPT_VERTEX_PROGRAM, false, true, dummy, &shaderDesc, &entryPoints);
+		crossCompile(hlsl, GPT_VERTEX_PROGRAM, CrossCompileOutput::GLSL45, true, dummy, &shaderDesc, &entryPoints);
 	}
 	}
 
 
 	BSLFXCompileResult BSLFXCompiler::compile(const String& name, const String& source, 
 	BSLFXCompileResult BSLFXCompiler::compile(const String& name, const String& source, 
@@ -1071,9 +1089,6 @@ namespace bs
 				}
 				}
 			}
 			}
 				break;
 				break;
-			case OT_FeatureSet:
-				metaData.featureSet = option->value.strValue;
-				break;
 			case OT_Identifier:
 			case OT_Identifier:
 				metaData.name = option->value.strValue;
 				metaData.name = option->value.strValue;
 				break;
 				break;
@@ -1697,6 +1712,9 @@ namespace bs
 				combinedCommonPassData.code += commonPassData.code;
 				combinedCommonPassData.code += commonPassData.code;
 			}
 			}
 				break;
 				break;
+			case OT_FeatureSet:
+				techniqueData.metaData.featureSet = option->value.strValue;
+				break;
 			default:
 			default:
 				break;
 				break;
 			}
 			}
@@ -1903,8 +1921,12 @@ namespace bs
 			TechniqueData glslTechnique = techniqueData[i].second;
 			TechniqueData glslTechnique = techniqueData[i].second;
 
 
 			// When working with OpenGL, lower-end feature sets are supported. For other backends, high-end is always assumed.
 			// When working with OpenGL, lower-end feature sets are supported. For other backends, high-end is always assumed.
+			CrossCompileOutput glslVersion = CrossCompileOutput::GLSL41;
 			if(glslTechnique.metaData.featureSet == "HighEnd")
 			if(glslTechnique.metaData.featureSet == "HighEnd")
+			{
 				glslTechnique.metaData.language = "glsl";
 				glslTechnique.metaData.language = "glsl";
+				glslVersion = CrossCompileOutput::GLSL45;
+			}
 			else
 			else
 				glslTechnique.metaData.language = "glsl4_1";
 				glslTechnique.metaData.language = "glsl4_1";
 
 
@@ -1943,33 +1965,45 @@ namespace bs
 					{
 					{
 					case GPT_VERTEX_PROGRAM:
 					case GPT_VERTEX_PROGRAM:
 						hlslPassData.vertexCode = hlslPassData.code;
 						hlslPassData.vertexCode = hlslPassData.code;
-						glslPassData.vertexCode = HLSLtoGLSL(glslPassData.code, GPT_VERTEX_PROGRAM, false, glslBinding);
-						vkslPassData.vertexCode = HLSLtoGLSL(glslPassData.code, GPT_VERTEX_PROGRAM, true, vkslBinding);
+						glslPassData.vertexCode = HLSLtoGLSL(glslPassData.code, GPT_VERTEX_PROGRAM, 
+							glslVersion, glslBinding);
+						vkslPassData.vertexCode = HLSLtoGLSL(glslPassData.code, GPT_VERTEX_PROGRAM, 
+							CrossCompileOutput::VKSL45, vkslBinding);
 						break;
 						break;
 					case GPT_FRAGMENT_PROGRAM:
 					case GPT_FRAGMENT_PROGRAM:
 						hlslPassData.fragmentCode = hlslPassData.code;
 						hlslPassData.fragmentCode = hlslPassData.code;
-						glslPassData.fragmentCode = HLSLtoGLSL(glslPassData.code, GPT_FRAGMENT_PROGRAM, false, glslBinding);
-						vkslPassData.fragmentCode = HLSLtoGLSL(glslPassData.code, GPT_FRAGMENT_PROGRAM, true, vkslBinding);
+						glslPassData.fragmentCode = HLSLtoGLSL(glslPassData.code, GPT_FRAGMENT_PROGRAM, 
+							glslVersion, glslBinding);
+						vkslPassData.fragmentCode = HLSLtoGLSL(glslPassData.code, GPT_FRAGMENT_PROGRAM, 
+							CrossCompileOutput::VKSL45, vkslBinding);
 						break;
 						break;
 					case GPT_GEOMETRY_PROGRAM:
 					case GPT_GEOMETRY_PROGRAM:
 						hlslPassData.geometryCode = hlslPassData.code;
 						hlslPassData.geometryCode = hlslPassData.code;
-						glslPassData.geometryCode = HLSLtoGLSL(glslPassData.code, GPT_GEOMETRY_PROGRAM, false, glslBinding);
-						vkslPassData.geometryCode = HLSLtoGLSL(glslPassData.code, GPT_GEOMETRY_PROGRAM, true, vkslBinding);
+						glslPassData.geometryCode = HLSLtoGLSL(glslPassData.code, GPT_GEOMETRY_PROGRAM, 
+							glslVersion, glslBinding);
+						vkslPassData.geometryCode = HLSLtoGLSL(glslPassData.code, GPT_GEOMETRY_PROGRAM, 
+							CrossCompileOutput::VKSL45, vkslBinding);
 						break;
 						break;
 					case GPT_HULL_PROGRAM:
 					case GPT_HULL_PROGRAM:
 						hlslPassData.hullCode = hlslPassData.code;
 						hlslPassData.hullCode = hlslPassData.code;
-						glslPassData.hullCode = HLSLtoGLSL(glslPassData.code, GPT_HULL_PROGRAM, false, glslBinding);
-						vkslPassData.hullCode = HLSLtoGLSL(glslPassData.code, GPT_HULL_PROGRAM, true, vkslBinding);
+						glslPassData.hullCode = HLSLtoGLSL(glslPassData.code, GPT_HULL_PROGRAM, 
+							glslVersion, glslBinding);
+						vkslPassData.hullCode = HLSLtoGLSL(glslPassData.code, GPT_HULL_PROGRAM, 
+							CrossCompileOutput::VKSL45, vkslBinding);
 						break;
 						break;
 					case GPT_DOMAIN_PROGRAM:
 					case GPT_DOMAIN_PROGRAM:
 						hlslPassData.domainCode = hlslPassData.code;
 						hlslPassData.domainCode = hlslPassData.code;
-						glslPassData.domainCode = HLSLtoGLSL(glslPassData.code, GPT_DOMAIN_PROGRAM, false, glslBinding);
-						vkslPassData.domainCode = HLSLtoGLSL(glslPassData.code, GPT_DOMAIN_PROGRAM, true, vkslBinding);
+						glslPassData.domainCode = HLSLtoGLSL(glslPassData.code, GPT_DOMAIN_PROGRAM, 
+							glslVersion, glslBinding);
+						vkslPassData.domainCode = HLSLtoGLSL(glslPassData.code, GPT_DOMAIN_PROGRAM, 
+							CrossCompileOutput::VKSL45, vkslBinding);
 						break;
 						break;
 					case GPT_COMPUTE_PROGRAM:
 					case GPT_COMPUTE_PROGRAM:
 						hlslPassData.computeCode = hlslPassData.code;
 						hlslPassData.computeCode = hlslPassData.code;
-						glslPassData.computeCode = HLSLtoGLSL(glslPassData.code, GPT_COMPUTE_PROGRAM, false, glslBinding);
-						vkslPassData.computeCode = HLSLtoGLSL(glslPassData.code, GPT_COMPUTE_PROGRAM, true, vkslBinding);
+						glslPassData.computeCode = HLSLtoGLSL(glslPassData.code, GPT_COMPUTE_PROGRAM, 
+							glslVersion, glslBinding);
+						vkslPassData.computeCode = HLSLtoGLSL(glslPassData.code, GPT_COMPUTE_PROGRAM, 
+							CrossCompileOutput::VKSL45, vkslBinding);
 						break;
 						break;
 					default:
 					default:
 						break;
 						break;