mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-04 10:03:36 +00:00
ShaderBlender: cast to ivec4 where needed. Fixes #1601
This works around a bug with Intel GPU's on macOS where colors can appear wrong.
This commit is contained in:
parent
5455604f64
commit
3c8689d848
|
@ -468,21 +468,21 @@ public:
|
|||
{
|
||||
#if 1
|
||||
m_part =
|
||||
" muxPM[0] = clampedColor; \n"
|
||||
" lowp vec4 vprobe = vec4(0.0, 1.0, 2.0, 3.0); \n"
|
||||
" if (uForceBlendCycle1 != 0) { \n"
|
||||
" muxA[0] = clampedColor.a; \n"
|
||||
" lowp float muxa = dot(muxA, vec4(equal(vec4(uBlendMux1[1]), vprobe))); \n"
|
||||
" muxB[0] = 1.0 - muxa; \n"
|
||||
" lowp vec4 muxpm0 = muxPM * vec4(equal(vec4(uBlendMux1[0]), vprobe)); \n"
|
||||
" lowp vec4 muxpm2 = muxPM * vec4(equal(vec4(uBlendMux1[2]), vprobe)); \n"
|
||||
" lowp float muxb = dot(muxB, vec4(equal(vec4(uBlendMux1[3]), vprobe))); \n"
|
||||
" lowp vec4 blend1 = (muxpm0 * muxa) + (muxpm2 * muxb); \n"
|
||||
" clampedColor.rgb = clamp(blend1.rgb, 0.0, 1.0); \n"
|
||||
" } else { \n"
|
||||
" lowp vec4 muxpm0 = muxPM * vec4(equal(vec4(uBlendMux1[0]), vprobe)); \n"
|
||||
" clampedColor.rgb = muxpm0.rgb; \n"
|
||||
" } \n"
|
||||
" muxPM[0] = clampedColor; \n"
|
||||
" lowp vec4 vprobe = vec4(0.0, 1.0, 2.0, 3.0); \n"
|
||||
" if (uForceBlendCycle1 != 0) { \n"
|
||||
" muxA[0] = clampedColor.a; \n"
|
||||
" lowp float muxa = dot(muxA, ivec4(equal(vec4(uBlendMux1[1]), vprobe))); \n"
|
||||
" muxB[0] = 1.0 - muxa; \n"
|
||||
" lowp vec4 muxpm0 = muxPM * ivec4(equal(vec4(uBlendMux1[0]), vprobe)); \n"
|
||||
" lowp vec4 muxpm2 = muxPM * ivec4(equal(vec4(uBlendMux1[2]), vprobe)); \n"
|
||||
" lowp float muxb = dot(muxB, ivec4(equal(vec4(uBlendMux1[3]), vprobe))); \n"
|
||||
" lowp vec4 blend1 = (muxpm0 * muxa) + (muxpm2 * muxb); \n"
|
||||
" clampedColor.rgb = clamp(blend1.rgb, 0.0, 1.0); \n"
|
||||
" } else { \n"
|
||||
" lowp vec4 muxpm0 = muxPM * ivec4(equal(vec4(uBlendMux1[0]), vprobe)); \n"
|
||||
" clampedColor.rgb = muxpm0.rgb; \n"
|
||||
" } \n"
|
||||
;
|
||||
#else
|
||||
// Keep old code for reference
|
||||
|
@ -514,21 +514,21 @@ public:
|
|||
{
|
||||
#if 1
|
||||
m_part =
|
||||
" muxPM[0] = clampedColor; \n"
|
||||
" muxPM[1] = vec4(0.0); \n"
|
||||
" if (uForceBlendCycle2 != 0) { \n"
|
||||
" muxA[0] = clampedColor.a; \n"
|
||||
" lowp float muxa = dot(muxA,vec4(equal(vec4(uBlendMux2[1]), vprobe))); \n"
|
||||
" muxB[0] = 1.0 - muxa; \n"
|
||||
" lowp vec4 muxpm0 = muxPM*vec4(equal(vec4(uBlendMux2[0]), vprobe)); \n"
|
||||
" lowp vec4 muxpm2 = muxPM*vec4(equal(vec4(uBlendMux2[2]), vprobe)); \n"
|
||||
" lowp float muxb = dot(muxB,vec4(equal(vec4(uBlendMux2[3]), vprobe))); \n"
|
||||
" lowp vec4 blend2 = muxpm0 * muxa + muxpm2 * muxb; \n"
|
||||
" clampedColor.rgb = clamp(blend2.rgb, 0.0, 1.0); \n"
|
||||
" } else { \n"
|
||||
" lowp vec4 muxpm0 = muxPM * vec4(equal(vec4(uBlendMux2[0]), vprobe)); \n"
|
||||
" clampedColor.rgb = muxpm0.rgb; \n"
|
||||
" } \n"
|
||||
" muxPM[0] = clampedColor; \n"
|
||||
" muxPM[1] = vec4(0.0); \n"
|
||||
" if (uForceBlendCycle2 != 0) { \n"
|
||||
" muxA[0] = clampedColor.a; \n"
|
||||
" lowp float muxa = dot(muxA, ivec4(equal(vec4(uBlendMux2[1]), vprobe))); \n"
|
||||
" muxB[0] = 1.0 - muxa; \n"
|
||||
" lowp vec4 muxpm0 = muxPM * ivec4(equal(vec4(uBlendMux2[0]), vprobe)); \n"
|
||||
" lowp vec4 muxpm2 = muxPM * ivec4(equal(vec4(uBlendMux2[2]), vprobe)); \n"
|
||||
" lowp float muxb = dot(muxB, ivec4(equal(vec4(uBlendMux2[3]), vprobe))); \n"
|
||||
" lowp vec4 blend2 = muxpm0 * muxa + muxpm2 * muxb; \n"
|
||||
" clampedColor.rgb = clamp(blend2.rgb, 0.0, 1.0); \n"
|
||||
" } else { \n"
|
||||
" lowp vec4 muxpm0 = muxPM * ivec4(equal(vec4(uBlendMux2[0]), vprobe)); \n"
|
||||
" clampedColor.rgb = muxpm0.rgb; \n"
|
||||
" } \n"
|
||||
;
|
||||
#else
|
||||
// Keep old code for reference
|
||||
|
|
Loading…
Reference in New Issue
Block a user