はじめに
「リアルタイムグラフィックスの数学」の第 1 章の補間についての勉強ログです。
<AmazonLink
imageId="61CP8Asy52L.SY522"
linkId="3Iy0agT"
title="リアルタイムグラフィックスの数学 ― GLSLではじめるシェーダプログラミング"
author="巴山竜来"
/>
線形補間とグラデーション
mix 関数について
GLSL における mix 関数は以下のような数式になります。
$$
\bm{a} + x\overrightarrow{AB} = \bm{a} + x(\bm{b} - \bm{a}) = (1 - x)\bm{a} + x\bm{b}
$$
これは、線分 AB があり、その線分上を動く 0 以上 1 以下の x に対して、線分 AB を x: (1 - x)に内分する点の位置ベクトルを表しています。上記の式のベクトルをmix(a, b, x)として定義しています。このように 2 点間をつなぐことを補間と呼び、上記の式は線形補間(Linear Interpolation)の公式です。
コード 1.1 のように、赤(1, 0, 0)と青(0, 0, 1)を mix 関数でつなぐことで 2 色のグラデーションを作ることができます。
vec2 RED = vec3(1.0, 0.0, 0.0);
vec3 BLUE = vec3(0.0, 0.0, 1.0);
vec3 col = mix(RED, BLUE, pos.x);
