はじめに
シェーダーを使い、以下のような4色のグラデーションを作る方法を紹介します。
2色グラデーション
x座標を使って二つの色を線形補間した場合、以下のような二色のグラデーションを作ることができます。
vec3 c = mix(GREEN, BLUE, p.x); // x座標で 緑と青を線形補間
4色グラデーション
x, y座標を使って4色を補完すると、以下のような4色のグラデーションを作ることができます。
vec3 tc = mix(YELLOW, RED, p.x); // top : 黄と赤の線形補間 (上側の色) vec3 bc = mix(GREEN, BLUE, p.x); // bottom : 緑と青の線形補間 (下側の色) vec3 c = mix(bc, tc, p.y); // y座標で top と bottom の線形補間
この補間はバイリニア補間(双一次補間)という名前がついています。
GLSLによる4色グラデーション実装
uniform vec2 resolution; #define YELLOW vec3(1,1,0) #define RED vec3(1,0,0) #define GREEN vec3(0,1,0) #define BLUE vec3(0,0,1) void main() { vec2 p = gl_FragCoord.xy / resolution.xy; vec3 tc = mix(YELLOW, RED, p.x); // top color vec3 bc = mix(GREEN, BLUE, p.x); // bottom color vec3 c = mix(bc, tc, p.y); gl_FragColor = vec4(c, 1); }
シェーダーグラフによる実装