|
|
|
@ -33,14 +33,14 @@ layout (std140, binding = EMULATION_UBO_BINDING) uniform vs_config { |
|
|
|
}; |
|
|
|
|
|
|
|
)"; |
|
|
|
ShaderIR program_ir(setup.program.code, PROGRAM_OFFSET); |
|
|
|
const ShaderIR program_ir(setup.program.code, PROGRAM_OFFSET); |
|
|
|
ProgramResult program = |
|
|
|
Decompile(device, program_ir, Maxwell3D::Regs::ShaderStage::Vertex, "vertex"); |
|
|
|
|
|
|
|
out += program.first; |
|
|
|
|
|
|
|
if (setup.IsDualProgram()) { |
|
|
|
ShaderIR program_ir_b(setup.program.code_b, PROGRAM_OFFSET); |
|
|
|
const ShaderIR program_ir_b(setup.program.code_b, PROGRAM_OFFSET); |
|
|
|
ProgramResult program_b = |
|
|
|
Decompile(device, program_ir_b, Maxwell3D::Regs::ShaderStage::Vertex, "vertex_b"); |
|
|
|
|
|
|
|
@ -76,7 +76,7 @@ void main() { |
|
|
|
} |
|
|
|
})"; |
|
|
|
|
|
|
|
return {out, program.second}; |
|
|
|
return {std::move(out), std::move(program.second)}; |
|
|
|
} |
|
|
|
|
|
|
|
ProgramResult GenerateGeometryShader(const Device& device, const ShaderSetup& setup) { |
|
|
|
@ -97,7 +97,7 @@ layout (std140, binding = EMULATION_UBO_BINDING) uniform gs_config { |
|
|
|
}; |
|
|
|
|
|
|
|
)"; |
|
|
|
ShaderIR program_ir(setup.program.code, PROGRAM_OFFSET); |
|
|
|
const ShaderIR program_ir(setup.program.code, PROGRAM_OFFSET); |
|
|
|
ProgramResult program = |
|
|
|
Decompile(device, program_ir, Maxwell3D::Regs::ShaderStage::Geometry, "geometry"); |
|
|
|
out += program.first; |
|
|
|
@ -107,7 +107,7 @@ void main() { |
|
|
|
execute_geometry(); |
|
|
|
};)"; |
|
|
|
|
|
|
|
return {out, program.second}; |
|
|
|
return {std::move(out), std::move(program.second)}; |
|
|
|
} |
|
|
|
|
|
|
|
ProgramResult GenerateFragmentShader(const Device& device, const ShaderSetup& setup) { |
|
|
|
@ -160,7 +160,7 @@ bool AlphaFunc(in float value) { |
|
|
|
} |
|
|
|
|
|
|
|
)"; |
|
|
|
ShaderIR program_ir(setup.program.code, PROGRAM_OFFSET); |
|
|
|
const ShaderIR program_ir(setup.program.code, PROGRAM_OFFSET); |
|
|
|
ProgramResult program = |
|
|
|
Decompile(device, program_ir, Maxwell3D::Regs::ShaderStage::Fragment, "fragment"); |
|
|
|
|
|
|
|
@ -172,7 +172,7 @@ void main() { |
|
|
|
} |
|
|
|
|
|
|
|
)"; |
|
|
|
return {out, program.second}; |
|
|
|
return {std::move(out), std::move(program.second)}; |
|
|
|
} |
|
|
|
|
|
|
|
} // namespace OpenGL::GLShader
|