第 28 课:Int/Floor
别人的解:我这里在第三次迭代找到了答案,这一次我用的if先跑通然后再做的简化,不能被方法的抽象困住了
别人的解
uniform vec2 iResolution;
vec3 palette[5] = vec3[5](
vec3(1.0, 0.0, 0.0),
vec3(0.0, 1.0, 0.0),
vec3(0.0, 0.0, 1.0),
vec3(1.0, 1.0, 0.0),
vec3(0.0, 0.0, 0.0)
);
void main() {
// Normalized pixel coordinates (from 0 to 1)
vec2 uv = gl_FragCoord.xy / iResolution.xy;
float paletteSize = 5.0;
float positionOnPalette = uv.x * (paletteSize - 1.0);
int prevColorIndex = int(positionOnPalette);
int nextColorIndex = prevColorIndex + 1;
vec3 prevColor = palette[prevColorIndex];
vec3 nextColor = palette[nextColorIndex];
vec3 color = mix(prevColor, nextColor, fract(positionOnPalette));
gl_FragColor = vec4(color, 1.0);
}
复盘笔记
- 我这里在第三次迭代找到了答案,这一次我用的if先跑通然后再做的简化,不能被方法的抽象困住了