ある地点における光の強さは、光源までの距離を d 、一定減衰率を kc 、1時減衰率を k1 、2時減衰率を k2 とすると以下の式で表すことができます。 減衰率kc, k1, k2はそれぞれGL側(ホストプログラム)からシェーダ側に送ることができる。 以下はホスト側のプログラム //距離減衰 //kc: 一定減衰率 = 0 //k1: 1次減衰率 = 0 //k2: 2次減衰率 = 1.0 / (lightPos.y * lightPos.y) glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, kc); glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, k1); glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, k2); んで、フラグメントシェーダ側の記述は以下のとおり