Initial commit
This commit is contained in:
42
engines/freescape/shaders/freescape_triangle.fragment
Normal file
42
engines/freescape/shaders/freescape_triangle.fragment
Normal file
@@ -0,0 +1,42 @@
|
||||
OUTPUT
|
||||
|
||||
uniform UBOOL useStipple;
|
||||
uniform int stipple[128];
|
||||
|
||||
varying vec4 var_color;
|
||||
|
||||
void main()
|
||||
{
|
||||
if (UBOOL_TEST(useStipple)) {
|
||||
// Calculate the 32x32 pattern coordinates
|
||||
ivec2 coord = ivec2(gl_FragCoord.xy);
|
||||
|
||||
// Calculate the byte position and bit position within that byte
|
||||
int x = int(mod(float(coord.x), 32.));
|
||||
int y = int(mod(float(coord.y), 32.));
|
||||
|
||||
// Each row in the 32x32 pattern is represented by 4 bytes (4 * 8 bits = 32 bits)
|
||||
int byteIndex = y * 4 + (x / 8);
|
||||
int bitIndex = int(mod(float(x), 8.));
|
||||
|
||||
// Get the stipple pattern byte
|
||||
int patternByte = 0;
|
||||
for (int i = 0; i < 128; i++) {
|
||||
if (i == byteIndex) {
|
||||
patternByte = stipple[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 7; i++) {
|
||||
if (i >= 7 - bitIndex)
|
||||
break;
|
||||
patternByte = patternByte / 2;
|
||||
}
|
||||
|
||||
if (int(mod(float(patternByte), 2.)) == 0)
|
||||
discard;
|
||||
}
|
||||
|
||||
outColor = var_color;
|
||||
}
|
||||
Reference in New Issue
Block a user