summaryrefslogtreecommitdiff
path: root/gfx/gl/shaders/getMaterialDetail.glsl
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2024-08-10 18:01:13 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2024-08-10 18:10:04 +0100
commit26c60d5ace9b2a0667a930c4c92a3990a1d7d1dc (patch)
tree7244d9e1902d2a2c90ad2e92e00ea53343c288cf /gfx/gl/shaders/getMaterialDetail.glsl
parentPull material detail function into a common file (diff)
downloadilt-26c60d5ace9b2a0667a930c4c92a3990a1d7d1dc.tar.bz2
ilt-26c60d5ace9b2a0667a930c4c92a3990a1d7d1dc.tar.xz
ilt-26c60d5ace9b2a0667a930c4c92a3990a1d7d1dc.zip
Fix texture usage via materials in shadows
This is a mess of a commit much like the shader folder, need a better way of dealing with them.
Diffstat (limited to 'gfx/gl/shaders/getMaterialDetail.glsl')
-rw-r--r--gfx/gl/shaders/getMaterialDetail.glsl12
1 files changed, 12 insertions, 0 deletions
diff --git a/gfx/gl/shaders/getMaterialDetail.glsl b/gfx/gl/shaders/getMaterialDetail.glsl
new file mode 100644
index 0000000..f819fb2
--- /dev/null
+++ b/gfx/gl/shaders/getMaterialDetail.glsl
@@ -0,0 +1,12 @@
+MaterialDetail
+getMaterialDetail(uint midx)
+{
+ if (midx > 0u) {
+ const vec4 sPosSize = texture(materialData, uvec2(0, midx - 1u));
+ const uvec4 sMode = texture(materialData, uvec2(1, midx - 1u));
+ const uint mapmodeU = sMode.x & 0xFu;
+ const uint mapmodeV = (sMode.x & 0xF0u) >> 1;
+ return MaterialDetail(sPosSize.xy, sPosSize.zw, uvec2(mapmodeU, mapmodeV));
+ }
+ return MaterialDetail(vec2(0, 0), vec2(0, 0), uvec2(0, 0));
+}