GLSL, 무지개 색 표현

수평으로 7개의 무지개 색을 표현하는 프레그먼트 쉐어디 코드입니다. 배열 자료형을 사용하고 있는 예제 코드입니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
uniform vec2 uResolution;
uniform float uTime;
uniform vec2 uMouse;
vec3 rainbow(float t) {
vec3 colors[7];
colors[0] = vec3(1.0, 0.0, 0.0); // 빨강
colors[1] = vec3(1.0, 0.5, 0.0); // 주황
colors[2] = vec3(1.0, 1.0, 0.0); // 노랑
colors[3] = vec3(0.0, 1.0, 0.0); // 초록
colors[4] = vec3(0.0, 0.0, 1.0); // 파랑
colors[5] = vec3(0.29, 0.0, 0.51); // 남색
colors[6] = vec3(0.56, 0.0, 1.0); // 보라
int index = int(t * 7.0);
return colors[index];
}
void main() {
vec2 st = gl_FragCoord.xy/uResolution.xy;
vec3 color = rainbow(st.x);
gl_FragColor = vec4(color,1.0);
}
uniform vec2 uResolution; uniform float uTime; uniform vec2 uMouse; vec3 rainbow(float t) { vec3 colors[7]; colors[0] = vec3(1.0, 0.0, 0.0); // 빨강 colors[1] = vec3(1.0, 0.5, 0.0); // 주황 colors[2] = vec3(1.0, 1.0, 0.0); // 노랑 colors[3] = vec3(0.0, 1.0, 0.0); // 초록 colors[4] = vec3(0.0, 0.0, 1.0); // 파랑 colors[5] = vec3(0.29, 0.0, 0.51); // 남색 colors[6] = vec3(0.56, 0.0, 1.0); // 보라 int index = int(t * 7.0); return colors[index]; } void main() { vec2 st = gl_FragCoord.xy/uResolution.xy; vec3 color = rainbow(st.x); gl_FragColor = vec4(color,1.0); }
uniform vec2 uResolution;
uniform float uTime;
uniform vec2 uMouse;

vec3 rainbow(float t) {
    vec3 colors[7];

    colors[0] = vec3(1.0, 0.0, 0.0); // 빨강
    colors[1] = vec3(1.0, 0.5, 0.0); // 주황
    colors[2] = vec3(1.0, 1.0, 0.0); // 노랑
    colors[3] = vec3(0.0, 1.0, 0.0); // 초록
    colors[4] = vec3(0.0, 0.0, 1.0); // 파랑
    colors[5] = vec3(0.29, 0.0, 0.51); // 남색
    colors[6] = vec3(0.56, 0.0, 1.0); // 보라
    
    int index = int(t * 7.0);
    return colors[index];
}

void main() {
    vec2 st = gl_FragCoord.xy/uResolution.xy;
    vec3 color = rainbow(st.x);
        
    gl_FragColor = vec4(color,1.0);
}

결과는 다음과 같습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다