第 15 课:Bindless Texturing
实现:sampler2D
本课需 多 pass / 后处理,暂以代码复盘呈现。
实现
uniform vec2 iResolution;
uniform float iTime;
uniform sampler2D iChannels[10];
in vec2 vUv;
in float vLayer;
layout(location = 0) out vec4 FragColor;
vec4 textureLayer(vec2 uv, int layer) {
if (layer == 9) return texture(iChannels[9], uv);
if (layer == 8) return texture(iChannels[8], uv);
if (layer == 7) return texture(iChannels[7], uv);
if (layer == 6) return texture(iChannels[6], uv);
if (layer == 5) return texture(iChannels[5], uv);
if (layer == 4) return texture(iChannels[4], uv);
if (layer == 3) return texture(iChannels[3], uv);
if (layer == 2) return texture(iChannels[2], uv);
if (layer == 1) return texture(iChannels[1], uv);
return texture(iChannels[0], uv);
}
void main() {
if (mod(iTime, 12.0) < vLayer + 1.0) {
discard;
}
FragColor = textureLayer(vUv, int(vLayer));
}
复盘笔记
- sampler2D
- sampler2DArray