This commit is contained in:
Henrik Rydgård 2020-10-26 09:29:47 +01:00
parent 92d73e3b03
commit 200c25bcc9
3 changed files with 42 additions and 1 deletions

View file

@ -120,3 +120,23 @@ void GLSLShaderCompat::SetupForVulkan() {
forceMatrix4x4 = false;
coefsFromBuffers = true;
}
void GLSLShaderCompat::SetupForD3D11() {
fragColor0 = "fragColor0";
fragColor1 = "fragColor1";
varying_fs = "in";
varying_vs = "out";
attribute = "in";
bitwiseOps = true;
framebufferFetchExtension = nullptr;
gles = false;
glslES30 = true;
glslVersionNumber = 450;
lastFragData = nullptr;
texture = "texture";
texelFetch = "texelFetch";
d3d11 = true;
forceMatrix4x4 = false;
coefsFromBuffers = true;
}

View file

@ -30,6 +30,8 @@ enum ShaderLanguage {
GLSL_VULKAN,
HLSL_DX9,
HLSL_D3D11,
HLSL_D3D11_TEST, // temporary
};
enum DebugShaderType {
@ -155,8 +157,10 @@ struct GLSLShaderCompat {
bool bitwiseOps;
bool forceMatrix4x4;
bool coefsFromBuffers;
bool d3d11;
void SetupForVulkan();
void SetupForD3D11();
};
// PSP vertex format.

View file

@ -40,6 +40,13 @@ bool GenerateFShader(FShaderID id, char *buffer, ShaderLanguage lang, std::strin
case ShaderLanguage::GLSL_300:
// TODO: Need a device - except that maybe glslang could be used to verify these ....
return false;
case ShaderLanguage::HLSL_D3D11_TEST:
{
GLSLShaderCompat compat{};
compat.SetupForVulkan();
uint64_t uniformMask;
return GenerateFragmentShaderGLSL(id, buffer, compat, &uniformMask, errorString);
}
default:
return false;
}
@ -62,6 +69,14 @@ bool GenerateVShader(VShaderID id, char *buffer, ShaderLanguage lang, std::strin
uint64_t uniformMask;
return GenerateVertexShaderGLSL(id, buffer, compat, &attrMask, &uniformMask, errorString);
}
case ShaderLanguage::HLSL_D3D11_TEST:
{
GLSLShaderCompat compat{};
compat.SetupForD3D11();
uint32_t attrMask;
uint64_t uniformMask;
return GenerateVertexShaderGLSL(id, buffer, compat, &attrMask, &uniformMask, errorString);
}
default:
return false;
}
@ -70,6 +85,7 @@ bool GenerateVShader(VShaderID id, char *buffer, ShaderLanguage lang, std::strin
bool TestCompileShader(const char *buffer, ShaderLanguage lang, bool vertex) {
switch (lang) {
case ShaderLanguage::HLSL_D3D11:
case ShaderLanguage::HLSL_D3D11_TEST:
{
auto output = CompileShaderToBytecodeD3D11(buffer, strlen(buffer), vertex ? "vs_4_0" : "ps_4_0", 0);
return !output.empty();
@ -128,8 +144,9 @@ bool TestShaderGenerators() {
LoadD3DCompilerDynamic();
ShaderLanguage languages[] = {
ShaderLanguage::GLSL_VULKAN,
ShaderLanguage::HLSL_D3D11_TEST,
ShaderLanguage::HLSL_D3D11,
ShaderLanguage::GLSL_VULKAN,
ShaderLanguage::GLSL_140,
ShaderLanguage::GLSL_300,
ShaderLanguage::HLSL_DX9,