点を丸く描く

WebGLで点を描画するとデフォルトでは正方形を描く。これを丸く描く方法をメモしておく。

if ( length(gl_PointCoord * 2.0 - 1.0) > 1.0 ) {
  discard;
} else {
  gl_FragColor = vec4( 1.0 );
}
gl_PointCoord * 2.0 - 1.0

この式で座標値が [0, 1]から[-1, 1]になるらしい。

length(gl_PointCoord * 2.0 - 1.0)

これで[0, 0]からの距離を調べる。

length(gl_PointCoord * 2.0 - 1.0) > 1.0

1.0より大きいか否かを調べる。

座標が[-1, 1]なので正方形の1辺の長さが2.0で、正方形に内接する円を考えるとその半径は1.0となり、その外側は破棄する、ということらしい。

 

カテゴリー: GLSL