参考
外積の使い方 - Tari Lari Run
やってみた
//Fragment Shader
uniform sampler2D texture;
void main()
{
vec3 q= vec3(gl_TexCoord[0].xy+vec2(-0.5,-0.5), 0.);
int n= 6;
vec3 p[6];
//反時計回りの定義
p[0]= vec3( 0.0, 0.50, 0.);
p[1]= vec3( 0.5, 0.25, 0.);
p[2]= vec3( 0.5, -0.25, 0.);
p[3]= vec3( 0.0, -0.50, 0.);
p[4]= vec3(-0.5, -0.25, 0.);
p[5]= vec3(-0.5, 0.25, 0.);
int c= 0;
for(int i=0; i<n; i++) {
c+= cross(p[i]-q, p[(i+1)%n]-q).z>0.?0:1; //pが時計回りなら z>0?1:0
}
gl_FragColor = (c==n)?vec4(0):vec4(1);
gl_FragColor.a= 1.;
}Vertex Shader側はQuartz ComposerのGLSL Shaderのデフォルトのまま Shader内はGLSL Gridを置いてある
結果
(多角形の頂点を0.9倍して余白をつくってある)
0 件のコメント:
コメントを投稿