|
|
|
@ -176,7 +176,6 @@ RasterizerOpenGL::RasterizerOpenGL() : shader_dirty(true) {
|
|
|
|
|
|
|
|
|
|
// Sync fixed function OpenGL state
|
|
|
|
|
SyncClipEnabled();
|
|
|
|
|
SyncClipCoef();
|
|
|
|
|
SyncCullMode();
|
|
|
|
|
SyncBlendEnabled();
|
|
|
|
|
SyncBlendFuncs();
|
|
|
|
@ -187,6 +186,30 @@ RasterizerOpenGL::RasterizerOpenGL() : shader_dirty(true) {
|
|
|
|
|
SyncColorWriteMask();
|
|
|
|
|
SyncStencilWriteMask();
|
|
|
|
|
SyncDepthWriteMask();
|
|
|
|
|
|
|
|
|
|
// Sync uniforms
|
|
|
|
|
SyncClipCoef();
|
|
|
|
|
SyncDepthScale();
|
|
|
|
|
SyncDepthOffset();
|
|
|
|
|
SyncAlphaTest();
|
|
|
|
|
SyncCombinerColor();
|
|
|
|
|
auto& tev_stages = Pica::g_state.regs.texturing.GetTevStages();
|
|
|
|
|
for (std::size_t index = 0; index < tev_stages.size(); ++index)
|
|
|
|
|
SyncTevConstColor(index, tev_stages[index]);
|
|
|
|
|
|
|
|
|
|
SyncGlobalAmbient();
|
|
|
|
|
for (unsigned light_index = 0; light_index < 8; light_index++) {
|
|
|
|
|
SyncLightSpecular0(light_index);
|
|
|
|
|
SyncLightSpecular1(light_index);
|
|
|
|
|
SyncLightDiffuse(light_index);
|
|
|
|
|
SyncLightAmbient(light_index);
|
|
|
|
|
SyncLightPosition(light_index);
|
|
|
|
|
SyncLightDistanceAttenuationBias(light_index);
|
|
|
|
|
SyncLightDistanceAttenuationScale(light_index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SyncFogColor();
|
|
|
|
|
SyncProcTexNoise();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RasterizerOpenGL::~RasterizerOpenGL() {}
|
|
|
|
@ -1284,29 +1307,6 @@ void RasterizerOpenGL::SetShader() {
|
|
|
|
|
"Uniform block size did not match! Got %d, expected %zu",
|
|
|
|
|
static_cast<int>(block_size), sizeof(UniformData));
|
|
|
|
|
glUniformBlockBinding(current_shader->shader.handle, block_index, 0);
|
|
|
|
|
|
|
|
|
|
// Update uniforms
|
|
|
|
|
SyncDepthScale();
|
|
|
|
|
SyncDepthOffset();
|
|
|
|
|
SyncAlphaTest();
|
|
|
|
|
SyncCombinerColor();
|
|
|
|
|
auto& tev_stages = Pica::g_state.regs.texturing.GetTevStages();
|
|
|
|
|
for (int index = 0; index < tev_stages.size(); ++index)
|
|
|
|
|
SyncTevConstColor(index, tev_stages[index]);
|
|
|
|
|
|
|
|
|
|
SyncGlobalAmbient();
|
|
|
|
|
for (int light_index = 0; light_index < 8; light_index++) {
|
|
|
|
|
SyncLightSpecular0(light_index);
|
|
|
|
|
SyncLightSpecular1(light_index);
|
|
|
|
|
SyncLightDiffuse(light_index);
|
|
|
|
|
SyncLightAmbient(light_index);
|
|
|
|
|
SyncLightPosition(light_index);
|
|
|
|
|
SyncLightDistanceAttenuationBias(light_index);
|
|
|
|
|
SyncLightDistanceAttenuationScale(light_index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SyncFogColor();
|
|
|
|
|
SyncProcTexNoise();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|