mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2024-11-26 11:34:15 +01:00
124 lines
4.1 KiB
Plaintext
124 lines
4.1 KiB
Plaintext
|
#version 420
|
||
|
#extension GL_ARB_texture_gather : enable
|
||
|
#extension GL_ARB_separate_shader_objects : enable
|
||
|
// shader 68357a3eaf8b29a8
|
||
|
uniform ivec4 uf_remappedPS[18];
|
||
|
layout(binding = 0) uniform samplerCubeArray textureUnitPS0;// Tex0 addr 0x17f2e800 res 4x4x1 dim 3 tm: 2 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x6) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
|
||
|
layout(binding = 1) uniform sampler2DArrayShadow textureUnitPS1;// Tex1 addr 0x17f2f800 res 4x4x1 dim 5 tm: 2 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
|
||
|
layout(binding = 2) uniform samplerCubeArray textureUnitPS2;// Tex2 addr 0x1c778800 res 32x32x1 dim 3 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x2) sliceView: 0x0 (num 0x6) Sampler2 ClampX/Y/Z: 2 2 2 border: 1
|
||
|
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0x17f2b000 res 4x4x1 dim 1 tm: 2 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 2 2 2 border: 1
|
||
|
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0x21e2e000 res 2048x1024x1 dim 1 tm: 4 format 0035 compSel: 0 1 4 4 mipView: 0x0 (num 0xc) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 0
|
||
|
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0x220da000 res 512x256x1 dim 1 tm: 4 format 0033 compSel: 0 1 2 3 mipView: 0x0 (num 0xa) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 2 2 2 border: 0
|
||
|
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0x23f9c000 res 128x128x1 dim 1 tm: 4 format 0431 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 0 0 2 border: 0
|
||
|
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0x22e8e000 res 256x256x1 dim 1 tm: 4 format 0235 compSel: 0 1 4 5 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 0 0 2 border: 0
|
||
|
layout(binding = 8) uniform sampler2D textureUnitPS8;// Tex8 addr 0x23fa0000 res 256x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 0 mipView: 0x0 (num 0x9) sliceView: 0x0 (num 0x1) Sampler8 ClampX/Y/Z: 0 0 2 border: 0
|
||
|
layout(location = 0) in vec4 passParameterSem0;
|
||
|
layout(location = 1) in vec4 passParameterSem1;
|
||
|
layout(location = 2) in vec4 passParameterSem2;
|
||
|
layout(location = 3) in vec4 passParameterSem3;
|
||
|
layout(location = 4) in vec4 passParameterSem4;
|
||
|
layout(location = 5) in vec4 passParameterSem7;
|
||
|
layout(location = 6) in vec4 passParameterSem5;
|
||
|
layout(location = 7) in vec4 passParameterSem6;
|
||
|
layout(location = 8) in vec4 passParameterSem8;
|
||
|
layout(location = 9) in vec4 passParameterSem9;
|
||
|
layout(location = 0) out vec4 passPixelColor0;
|
||
|
uniform vec2 uf_fragCoordScale;
|
||
|
void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId)
|
||
|
{
|
||
|
// stm -> x .. s, y .. t, z .. MajorAxis*2.0
|
||
|
vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x));
|
||
|
float rx = inputCoord.x;
|
||
|
float ry = inputCoord.y;
|
||
|
float rz = inputCoord.z;
|
||
|
if( abs(rx) > abs(ry) && abs(rx) > abs(rz) )
|
||
|
{
|
||
|
stm.z = rx*2.0;
|
||
|
stm.xy = vec2(ry,rz);
|
||
|
if( rx >= 0.0 )
|
||
|
{
|
||
|
faceId = 0;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
faceId = 1;
|
||
|
}
|
||
|
}
|
||
|
else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) )
|
||
|
{
|
||
|
stm.z = ry*2.0;
|
||
|
stm.xy = vec2(rx,rz);
|
||
|
if( ry >= 0.0 )
|
||
|
{
|
||
|
faceId = 2;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
faceId = 3;
|
||
|
}
|
||
|
}
|
||
|
else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) )
|
||
|
{
|
||
|
stm.z = rz*2.0;
|
||
|
stm.xy = vec2(rx,ry);
|
||
|
if( rz >= 0.0 )
|
||
|
{
|
||
|
faceId = 4;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
faceId = 5;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
vec3 redcCUBEReverse(vec2 st, int faceId)
|
||
|
{
|
||
|
st.yx = st.xy;
|
||
|
vec3 v;
|
||
|
float majorAxis = 1.0;
|
||
|
if( faceId == 0 )
|
||
|
{
|
||
|
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
|
||
|
v.x = 1.0;
|
||
|
}
|
||
|
else if( faceId == 1 )
|
||
|
{
|
||
|
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
|
||
|
v.x = -1.0;
|
||
|
}
|
||
|
else if( faceId == 2 )
|
||
|
{
|
||
|
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
|
||
|
v.y = 1.0;
|
||
|
}
|
||
|
else if( faceId == 3 )
|
||
|
{
|
||
|
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
|
||
|
v.y = -1.0;
|
||
|
}
|
||
|
else if( faceId == 4 )
|
||
|
{
|
||
|
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
|
||
|
v.z = 1.0;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
|
||
|
v.z = -1.0;
|
||
|
}
|
||
|
return v;
|
||
|
}
|
||
|
int clampFI32(int v)
|
||
|
{
|
||
|
if( v == 0x7FFFFFFF )
|
||
|
return floatBitsToInt(1.0);
|
||
|
else if( v == 0xFFFFFFFF )
|
||
|
return floatBitsToInt(0.0);
|
||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||
|
}
|
||
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
||
|
void main()
|
||
|
{
|
||
|
|
||
|
}
|