mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Merge the tex "ubershader" uniforms into one for convenience
This commit is contained in:
parent
ebd36a4369
commit
bb6d696a84
6 changed files with 14 additions and 19 deletions
|
@ -264,8 +264,7 @@ bool GenerateFragmentShader(const FShaderID &id, char *buffer, const ShaderLangu
|
|||
if (texFunc == GE_TEXFUNC_BLEND) {
|
||||
WRITE(p, "float3 u_texenv : register(c%i);\n", CONST_PS_TEXENV);
|
||||
}
|
||||
WRITE(p, "float u_texNoAlpha : register(c%i);\n", CONST_PS_TEX_NO_ALPHA);
|
||||
WRITE(p, "float u_texMul : register(c%i);\n", CONST_PS_TEX_MUL);
|
||||
WRITE(p, "float2 u_texNoAlphaMul : register(c%i);\n", CONST_PS_TEX_NO_ALPHA_MUL);
|
||||
}
|
||||
if (enableFog) {
|
||||
WRITE(p, "float3 u_fogcolor : register(c%i);\n", CONST_PS_FOGCOLOR);
|
||||
|
@ -364,8 +363,7 @@ bool GenerateFragmentShader(const FShaderID &id, char *buffer, const ShaderLangu
|
|||
WRITE(p, "uniform sampler2D tex;\n");
|
||||
}
|
||||
*uniformMask |= DIRTY_TEX_ALPHA_MUL;
|
||||
WRITE(p, "uniform float u_texNoAlpha;\n");
|
||||
WRITE(p, "uniform float u_texMul;\n");
|
||||
WRITE(p, "uniform vec2 u_texNoAlphaMul;\n");
|
||||
}
|
||||
|
||||
if (readFramebufferTex) {
|
||||
|
@ -844,7 +842,7 @@ bool GenerateFragmentShader(const FShaderID &id, char *buffer, const ShaderLangu
|
|||
WRITE(p, " vec4 p = v_color0;\n");
|
||||
|
||||
if (texFunc != GE_TEXFUNC_REPLACE) {
|
||||
WRITE(p, " t.a = max(t.a, u_texNoAlpha);\n");
|
||||
WRITE(p, " t.a = max(t.a, u_texNoAlphaMul.x);\n");
|
||||
}
|
||||
|
||||
switch (texFunc) {
|
||||
|
@ -859,7 +857,7 @@ bool GenerateFragmentShader(const FShaderID &id, char *buffer, const ShaderLangu
|
|||
break;
|
||||
case GE_TEXFUNC_REPLACE:
|
||||
WRITE(p, " vec4 r = t;\n");
|
||||
WRITE(p, " r.a = mix(r.a, p.a, u_texNoAlpha);\n");
|
||||
WRITE(p, " r.a = mix(r.a, p.a, u_texNoAlphaMul.x);\n");
|
||||
WRITE(p, " vec4 v = r%s;\n", secondary);
|
||||
break;
|
||||
case GE_TEXFUNC_ADD:
|
||||
|
@ -879,9 +877,9 @@ bool GenerateFragmentShader(const FShaderID &id, char *buffer, const ShaderLangu
|
|||
|
||||
// We only need a clamp if the color will be further processed. Otherwise the hardware color conversion will clamp for us.
|
||||
if (enableFog || enableColorTest || replaceBlend != REPLACE_BLEND_NO || simulateLogicOpType != LOGICOPTYPE_NORMAL || colorWriteMask || blueToAlpha) {
|
||||
WRITE(p, " v.rgb = clamp(v.rgb * u_texMul, 0.0, 1.0);\n");
|
||||
WRITE(p, " v.rgb = clamp(v.rgb * u_texNoAlphaMul.y, 0.0, 1.0);\n");
|
||||
} else {
|
||||
WRITE(p, " v.rgb *= u_texMul;\n");
|
||||
WRITE(p, " v.rgb *= u_texNoAlphaMul.y;\n");
|
||||
}
|
||||
} else {
|
||||
// No texture mapping
|
||||
|
|
|
@ -36,8 +36,7 @@ struct FShaderID;
|
|||
#define CONST_PS_TEXCLAMP 8
|
||||
#define CONST_PS_TEXCLAMPOFF 9
|
||||
#define CONST_PS_MIPBIAS 10
|
||||
#define CONST_PS_TEX_NO_ALPHA 11
|
||||
#define CONST_PS_TEX_MUL 12
|
||||
#define CONST_PS_TEX_NO_ALPHA_MUL 11
|
||||
|
||||
// For stencil upload
|
||||
#define BCONST_PS_STENCILVALUE 13
|
||||
|
|
|
@ -66,7 +66,7 @@ R"( mat4 u_proj;
|
|||
vec4 u_texclamp;
|
||||
vec2 u_texclampoff;
|
||||
vec2 u_fogcoef;
|
||||
float u_texNoAlpha; float u_texMul; float pad1; float pad2;
|
||||
vec2 u_texNoAlphaMul; float pad1; float pad2;
|
||||
)";
|
||||
|
||||
// 512 bytes. Would like to shrink more. Some colors only have 8-bit precision and we expand
|
||||
|
|
|
@ -291,8 +291,8 @@ void ShaderManagerDX9::PSUpdateUniforms(u64 dirtyUniforms) {
|
|||
doTextureAlpha = false;
|
||||
}
|
||||
// NOTE: Reversed value, more efficient in shader.
|
||||
PSSetFloat(CONST_PS_TEX_NO_ALPHA, doTextureAlpha ? 0.0f : 1.0f);
|
||||
PSSetFloat(CONST_PS_TEX_MUL, gstate.isColorDoublingEnabled() ? 2.0f : 1.0f);
|
||||
float noAlphaMul[2] = { doTextureAlpha ? 0.0f : 1.0f, gstate.isColorDoublingEnabled() ? 2.0f : 1.0f };
|
||||
PSSetFloatArray(CONST_PS_TEX_NO_ALPHA_MUL, noAlphaMul, 2);
|
||||
}
|
||||
if (dirtyUniforms & DIRTY_SHADERBLEND) {
|
||||
PSSetColorUniform3(CONST_PS_BLENDFIXA, gstate.getFixA());
|
||||
|
|
|
@ -154,8 +154,7 @@ LinkedShader::LinkedShader(GLRenderManager *render, VShaderID VSID, Shader *vs,
|
|||
queries.push_back({ &u_uvscaleoffset, "u_uvscaleoffset" });
|
||||
queries.push_back({ &u_texclamp, "u_texclamp" });
|
||||
queries.push_back({ &u_texclampoff, "u_texclampoff" });
|
||||
queries.push_back({ &u_texNoAlpha, "u_texNoAlpha" });
|
||||
queries.push_back({ &u_texMul, "u_texMul" });
|
||||
queries.push_back({ &u_texNoAlphaMul, "u_texNoAlphaMul" });
|
||||
queries.push_back({ &u_lightControl, "u_lightControl" });
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
|
@ -466,8 +465,8 @@ void LinkedShader::UpdateUniforms(const ShaderID &vsid, bool useBufferedRenderin
|
|||
if (gstate_c.textureFullAlpha && gstate.getTextureFunction() != GE_TEXFUNC_REPLACE) {
|
||||
doTextureAlpha = false;
|
||||
}
|
||||
render_->SetUniformF1(&u_texNoAlpha, doTextureAlpha ? 0.0f : 1.0f);
|
||||
render_->SetUniformF1(&u_texMul, gstate.isColorDoublingEnabled() ? 2.0f : 1.0f);
|
||||
float noAlphaMul[2] = { doTextureAlpha ? 0.0f : 1.0f, gstate.isColorDoublingEnabled() ? 2.0f : 1.0f };
|
||||
render_->SetUniformF(&u_texNoAlphaMul, 2, noAlphaMul);
|
||||
}
|
||||
if (dirty & DIRTY_ALPHACOLORREF) {
|
||||
if (shaderLanguage.bitwiseOps) {
|
||||
|
|
|
@ -102,8 +102,7 @@ public:
|
|||
int u_uvscaleoffset;
|
||||
int u_texclamp;
|
||||
int u_texclampoff;
|
||||
int u_texNoAlpha;
|
||||
int u_texMul;
|
||||
int u_texNoAlphaMul;
|
||||
|
||||
// Lighting
|
||||
int u_lightControl;
|
||||
|
|
Loading…
Add table
Reference in a new issue