Skip to content

Commit

Permalink
Revert "Pass the vr_use_immersive_mode as a Vertex Shader Uniform"
Browse files Browse the repository at this point in the history
This reverts commit 1eb7c15.
  • Loading branch information
amwatson committed Jan 30, 2024
1 parent 5cab348 commit e772f1c
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 19 deletions.
7 changes: 0 additions & 7 deletions src/video_core/rasterizer_accelerated.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

#include <limits>
#include "common/alignment.h"
#include "common/settings.h"
#include "core/memory.h"
#include "video_core/pica_state.h"
#include "video_core/rasterizer_accelerated.h"
Expand Down Expand Up @@ -137,7 +136,6 @@ void RasterizerAccelerated::SyncEntireState() {

// Sync uniforms
SyncClipPlane();
SyncVRImmersive();
SyncDepthScale();
SyncDepthOffset();
SyncAlphaTest();
Expand Down Expand Up @@ -862,9 +860,4 @@ void RasterizerAccelerated::SyncClipPlane() {
}
}

void RasterizerAccelerated::SyncVRImmersive() {
vs_uniform_block_data.data.vr_use_immersive_mode = Settings::values.vr_use_immersive_mode.GetValue();
vs_uniform_block_data.dirty = true;
}

} // namespace VideoCore
3 changes: 0 additions & 3 deletions src/video_core/rasterizer_accelerated.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,6 @@ class RasterizerAccelerated : public RasterizerInterface {
/// Syncs the clip plane state to match the PICA register
void SyncClipPlane();

/// Syncs the VR immersive flag
void SyncVRImmersive();

protected:
/// Structure that keeps tracks of the vertex shader uniform state
struct VSUniformBlockData {
Expand Down
27 changes: 19 additions & 8 deletions src/video_core/shader/generator/glsl_shader_gen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ layout (set = 0, binding = 1, std140) uniform vs_data {
#else
layout (binding = 1, std140) uniform vs_data {
#endif
bool vr_use_immersive_mode;
bool enable_clip1;
vec4 clip_coef;
};
Expand Down Expand Up @@ -1682,7 +1681,12 @@ void main() {
}
)";

out+= "\ngl_Position = vec4(vtx_pos.x, vtx_pos.y, -vtx_pos.z, vtx_pos.w);\n";
if (!Settings::values.vr_use_immersive_mode.GetValue())
{
out+= "\ngl_Position = vec4(vtx_pos.x, vtx_pos.y, -vtx_pos.z, vtx_pos.w);\n";
} else {
out+= "\ngl_Position = vec4(vtx_pos.x / 3.0, vtx_pos.y / 3.0, -vtx_pos.z, vtx_pos.w);\n";
}

if (use_clip_planes) {
out += R"(
Expand Down Expand Up @@ -1803,7 +1807,14 @@ std::string GenerateVertexShader(const Pica::Shader::ShaderSetup& setup, const P
out += " vtx_pos.z = 0.f;\n";
out += " }\n";

out+= " gl_Position = vec4(vtx_pos.x, vtx_pos.y, -vtx_pos.z, vtx_pos.w);\n";
if (!Settings::values.vr_use_immersive_mode.GetValue())
{
out+= " gl_Position = vec4(vtx_pos.x, vtx_pos.y, -vtx_pos.z, vtx_pos.w);\n";
}
else
{
out+= " gl_Position = vec4(vtx_pos.x / 3.0, vtx_pos.y / 3.0, -vtx_pos.z, vtx_pos.w);\n";
}

if (config.state.use_clip_planes) {
out += " gl_ClipDistance[0] = -vtx_pos.z;\n"; // fixed PICA clipping plane z <= 0
Expand Down Expand Up @@ -1902,11 +1913,11 @@ struct Vertex {
out += " vtx_pos.z = 0.f;\n";
out += " }\n";

out += " if (vr_use_immersive_mode) {\n";
out += " gl_Position = vec4(vtx_pos.x / 3.0, vtx_pos.y / 3.0, -vtx_pos.z, vtx_pos.w);\n";
out += " } else {\n";
out += " gl_Position = vec4(vtx_pos.x, vtx_pos.y, -vtx_pos.z, vtx_pos.w);\n";
out += " }\n\n";
if (!Settings::values.vr_use_immersive_mode.GetValue()) {
out+= " gl_Position = vec4(vtx_pos.x, vtx_pos.y, -vtx_pos.z, vtx_pos.w);\n";
} else {
out+= " gl_Position = vec4(vtx_pos.x / 3.0, vtx_pos.y / 3.0, -vtx_pos.z, vtx_pos.w);\n";
}

if (state.use_clip_planes) {
out += " gl_ClipDistance[0] = -vtx_pos.z;\n"; // fixed PICA clipping plane z <= 0
Expand Down
4 changes: 4 additions & 0 deletions src/video_core/shader/generator/shader_gen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ PicaFSConfig::PicaFSConfig(const Pica::Regs& regs, bool has_fragment_shader_inte
? regs.framebuffer.output_merger.alpha_test.func.Value()
: Pica::FramebufferRegs::CompareFunc::Always);

state.vr_use_immersive_mode.Assign(Settings::values.vr_use_immersive_mode.GetValue());

state.texture0_type.Assign(regs.texturing.texture0.type);

state.texture2_use_coord1.Assign(regs.texturing.main_config.texture2_use_coord1 != 0);
Expand Down Expand Up @@ -268,6 +270,8 @@ void PicaVSConfigState::Init(const Pica::Regs& regs, Pica::Shader::ShaderSetup&
if (!use_geometry_shader_) {
gs_state.Init(regs, use_clip_planes_);
}

vr_use_immersive_mode = Settings::values.vr_use_immersive_mode.GetValue();
}

PicaVSConfig::PicaVSConfig(const Pica::Regs& regs, Pica::Shader::ShaderSetup& setup,
Expand Down
3 changes: 3 additions & 0 deletions src/video_core/shader/generator/shader_gen.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ struct PicaFSConfigState {
BitField<28, 1, u32> shadow_texture_orthographic;
BitField<29, 1, u32> use_fragment_shader_interlock;
BitField<30, 1, u32> use_custom_normal_map;
BitField<31, 1, u32> vr_use_immersive_mode;
};

union {
Expand Down Expand Up @@ -216,6 +217,8 @@ struct PicaVSConfigState {

PicaGSConfigState gs_state;

bool vr_use_immersive_mode;

};

/**
Expand Down
1 change: 0 additions & 1 deletion src/video_core/shader/generator/shader_uniforms.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ struct PicaUniformsData {
};

struct VSUniformData {
bool vr_use_immersive_mode;
bool enable_clip1;
alignas(16) Common::Vec4f clip_coef;
};
Expand Down

0 comments on commit e772f1c

Please sign in to comment.