summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_rasterizer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/renderer_opengl/gl_rasterizer.h')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.h56
1 files changed, 30 insertions, 26 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h
index cc3e4bed5..ecf737438 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.h
+++ b/src/video_core/renderer_opengl/gl_rasterizer.h
@@ -16,10 +16,13 @@
#include "common/hash.h"
#include "common/vector_math.h"
#include "core/hw/gpu.h"
-#include "video_core/pica.h"
#include "video_core/pica_state.h"
#include "video_core/pica_types.h"
#include "video_core/rasterizer_interface.h"
+#include "video_core/regs_framebuffer.h"
+#include "video_core/regs_lighting.h"
+#include "video_core/regs_rasterizer.h"
+#include "video_core/regs_texturing.h"
#include "video_core/renderer_opengl/gl_rasterizer_cache.h"
#include "video_core/renderer_opengl/gl_resource_manager.h"
#include "video_core/renderer_opengl/gl_state.h"
@@ -52,20 +55,20 @@ union PicaShaderConfig {
const auto& regs = Pica::g_state.regs;
- state.scissor_test_mode = regs.scissor_test.mode;
+ state.scissor_test_mode = regs.rasterizer.scissor_test.mode;
- state.depthmap_enable = regs.depthmap_enable;
+ state.depthmap_enable = regs.rasterizer.depthmap_enable;
- state.alpha_test_func = regs.output_merger.alpha_test.enable
- ? regs.output_merger.alpha_test.func.Value()
- : Pica::Regs::CompareFunc::Always;
+ state.alpha_test_func = regs.framebuffer.output_merger.alpha_test.enable
+ ? regs.framebuffer.output_merger.alpha_test.func.Value()
+ : Pica::FramebufferRegs::CompareFunc::Always;
- state.texture0_type = regs.texture0.type;
+ state.texture0_type = regs.texturing.texture0.type;
// Copy relevant tev stages fields.
// We don't sync const_color here because of the high variance, it is a
// shader uniform instead.
- const auto& tev_stages = regs.GetTevStages();
+ const auto& tev_stages = regs.texturing.GetTevStages();
DEBUG_ASSERT(state.tev_stages.size() == tev_stages.size());
for (size_t i = 0; i < tev_stages.size(); i++) {
const auto& tev_stage = tev_stages[i];
@@ -75,16 +78,17 @@ union PicaShaderConfig {
state.tev_stages[i].scales_raw = tev_stage.scales_raw;
}
- state.fog_mode = regs.fog_mode;
- state.fog_flip = regs.fog_flip != 0;
+ state.fog_mode = regs.texturing.fog_mode;
+ state.fog_flip = regs.texturing.fog_flip != 0;
- state.combiner_buffer_input = regs.tev_combiner_buffer_input.update_mask_rgb.Value() |
- regs.tev_combiner_buffer_input.update_mask_a.Value() << 4;
+ state.combiner_buffer_input =
+ regs.texturing.tev_combiner_buffer_input.update_mask_rgb.Value() |
+ regs.texturing.tev_combiner_buffer_input.update_mask_a.Value() << 4;
// Fragment lighting
state.lighting.enable = !regs.lighting.disable;
- state.lighting.src_num = regs.lighting.num_lights + 1;
+ state.lighting.src_num = regs.lighting.max_light_index + 1;
for (unsigned light_index = 0; light_index < state.lighting.src_num; ++light_index) {
unsigned num = regs.lighting.light_enable.GetNum(light_index);
@@ -159,8 +163,8 @@ union PicaShaderConfig {
u32 modifiers_raw;
u32 ops_raw;
u32 scales_raw;
- explicit operator Pica::Regs::TevStageConfig() const noexcept {
- Pica::Regs::TevStageConfig stage;
+ explicit operator Pica::TexturingRegs::TevStageConfig() const noexcept {
+ Pica::TexturingRegs::TevStageConfig stage;
stage.sources_raw = sources_raw;
stage.modifiers_raw = modifiers_raw;
stage.ops_raw = ops_raw;
@@ -171,14 +175,14 @@ union PicaShaderConfig {
};
struct State {
- Pica::Regs::CompareFunc alpha_test_func;
- Pica::Regs::ScissorMode scissor_test_mode;
- Pica::Regs::TextureConfig::TextureType texture0_type;
+ Pica::FramebufferRegs::CompareFunc alpha_test_func;
+ Pica::RasterizerRegs::ScissorMode scissor_test_mode;
+ Pica::TexturingRegs::TextureConfig::TextureType texture0_type;
std::array<TevStageConfigRaw, 6> tev_stages;
u8 combiner_buffer_input;
- Pica::Regs::DepthBuffering depthmap_enable;
- Pica::Regs::FogMode fog_mode;
+ Pica::RasterizerRegs::DepthBuffering depthmap_enable;
+ Pica::TexturingRegs::FogMode fog_mode;
bool fog_flip;
struct {
@@ -191,18 +195,18 @@ union PicaShaderConfig {
bool enable;
unsigned src_num;
- Pica::Regs::LightingBumpMode bump_mode;
+ Pica::LightingRegs::LightingBumpMode bump_mode;
unsigned bump_selector;
bool bump_renorm;
bool clamp_highlights;
- Pica::Regs::LightingConfig config;
- Pica::Regs::LightingFresnelSelector fresnel_selector;
+ Pica::LightingRegs::LightingConfig config;
+ Pica::LightingRegs::LightingFresnelSelector fresnel_selector;
struct {
bool enable;
bool abs_input;
- Pica::Regs::LightingLutInput type;
+ Pica::LightingRegs::LightingLutInput type;
float scale;
} lut_d0, lut_d1, lut_fr, lut_rr, lut_rg, lut_rb;
} lighting;
@@ -251,7 +255,7 @@ public:
private:
struct SamplerInfo {
- using TextureConfig = Pica::Regs::TextureConfig;
+ using TextureConfig = Pica::TexturingRegs::TextureConfig;
OGLSampler sampler;
@@ -398,7 +402,7 @@ private:
void SyncCombinerColor();
/// Syncs the TEV constant color to match the PICA register
- void SyncTevConstColor(int tev_index, const Pica::Regs::TevStageConfig& tev_stage);
+ void SyncTevConstColor(int tev_index, const Pica::TexturingRegs::TevStageConfig& tev_stage);
/// Syncs the lighting global ambient color to match the PICA register
void SyncGlobalAmbient();