mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-29 22:20:48 +00:00
GL: enable 2-sided lighting (#2103)
This commit is contained in:
parent
a270ac7f02
commit
6e07e07cd0
@ -46,13 +46,32 @@ void GLFragmentDecompilerThread::insertIntputs(std::stringstream & OS)
|
|||||||
{
|
{
|
||||||
for (const ParamItem& PI : PT.items)
|
for (const ParamItem& PI : PT.items)
|
||||||
{
|
{
|
||||||
|
if (m_prog.front_back_color_enabled)
|
||||||
|
{
|
||||||
|
if (PI.name == "diff_color" && m_prog.back_color_diffuse_output)
|
||||||
|
OS << "in vec4 back_diff_color;" << std::endl;
|
||||||
|
|
||||||
|
if (PI.name == "spec_color" && m_prog.back_color_specular_output)
|
||||||
|
OS << "in vec4 back_spec_color;" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
//Rename fogc to fog_c to differentiate the input register from the variable
|
//Rename fogc to fog_c to differentiate the input register from the variable
|
||||||
if (PI.name == "fogc")
|
if (PI.name == "fogc")
|
||||||
OS << "in vec4 fog_c;" << std::endl;
|
OS << "in vec4 fog_c;" << std::endl;
|
||||||
else
|
|
||||||
OS << "in " << PT.type << " " << PI.name << ";" << std::endl;
|
OS << "in " << PT.type << " " << PI.name << ";" << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_prog.front_back_color_enabled)
|
||||||
|
{
|
||||||
|
if (m_prog.front_color_diffuse_output)
|
||||||
|
OS << "in vec4 front_diff_color;" << std::endl;
|
||||||
|
|
||||||
|
if (m_prog.front_color_specular_output)
|
||||||
|
OS << "in vec4 front_spec_color;" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLFragmentDecompilerThread::insertOutputs(std::stringstream & OS)
|
void GLFragmentDecompilerThread::insertOutputs(std::stringstream & OS)
|
||||||
@ -188,10 +207,24 @@ void GLFragmentDecompilerThread::insertMainStart(std::stringstream & OS)
|
|||||||
{
|
{
|
||||||
for (const ParamItem& PI : PT.items)
|
for (const ParamItem& PI : PT.items)
|
||||||
{
|
{
|
||||||
|
if (m_prog.front_back_color_enabled)
|
||||||
|
{
|
||||||
|
if (PI.name == "spec_color" && m_prog.back_color_specular_output)
|
||||||
|
{
|
||||||
|
OS << " vec4 spec_color = gl_FrontFacing ? front_spec_color : spec_color;\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (PI.name == "diff_color" && m_prog.back_color_diffuse_output)
|
||||||
|
{
|
||||||
|
OS << " vec4 diff_color = gl_FrontFacing ? front_diff_color : diff_color;\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (PI.name == "fogc")
|
if (PI.name == "fogc")
|
||||||
{
|
{
|
||||||
insert_fog_declaration(OS, m_prog.fog_equation);
|
insert_fog_declaration(OS, m_prog.fog_equation);
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -268,29 +301,9 @@ GLFragmentProgram::GLFragmentProgram()
|
|||||||
|
|
||||||
GLFragmentProgram::~GLFragmentProgram()
|
GLFragmentProgram::~GLFragmentProgram()
|
||||||
{
|
{
|
||||||
//if (m_decompiler_thread)
|
|
||||||
//{
|
|
||||||
// Wait();
|
|
||||||
// if (m_decompiler_thread->IsAlive())
|
|
||||||
// {
|
|
||||||
// m_decompiler_thread->Stop();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// delete m_decompiler_thread;
|
|
||||||
// m_decompiler_thread = nullptr;
|
|
||||||
//}
|
|
||||||
|
|
||||||
Delete();
|
Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
//void GLFragmentProgram::Wait()
|
|
||||||
//{
|
|
||||||
// if (m_decompiler_thread && m_decompiler_thread->IsAlive())
|
|
||||||
// {
|
|
||||||
// m_decompiler_thread->Join();
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
void GLFragmentProgram::Decompile(const RSXFragmentProgram& prog)
|
void GLFragmentProgram::Decompile(const RSXFragmentProgram& prog)
|
||||||
{
|
{
|
||||||
u32 size;
|
u32 size;
|
||||||
@ -308,24 +321,6 @@ void GLFragmentProgram::Decompile(const RSXFragmentProgram& prog)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//void GLFragmentProgram::DecompileAsync(RSXFragmentProgram& prog)
|
|
||||||
//{
|
|
||||||
// if (m_decompiler_thread)
|
|
||||||
// {
|
|
||||||
// Wait();
|
|
||||||
// if (m_decompiler_thread->IsAlive())
|
|
||||||
// {
|
|
||||||
// m_decompiler_thread->Stop();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// delete m_decompiler_thread;
|
|
||||||
// m_decompiler_thread = nullptr;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// m_decompiler_thread = new GLFragmentDecompilerThread(shader, parr, prog.addr, prog.size, prog.ctrl);
|
|
||||||
// m_decompiler_thread->Start();
|
|
||||||
//}
|
|
||||||
|
|
||||||
void GLFragmentProgram::Compile()
|
void GLFragmentProgram::Compile()
|
||||||
{
|
{
|
||||||
if (id)
|
if (id)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user