现在的位置: 首页 > 综合 > 正文

graphics shader 2: geometry shader

2018年05月27日 ⁄ 综合 ⁄ 共 743字 ⁄ 字号 评论关闭

layout( triangles ) in;
layout( triangle_strip, max_vertices=32 ) out;
uniform float uShrink;
uniform mat4 uModelViewProjectionMatrix;
in vec3 vNormal[3];
out float gLightIntensity;
const vec3 LIGHTPOS = vec3( 0., 10., 0. );
vec3 V[3];
vec3 CG;
void
ProduceVertex( int vi )
{
gLightIntensity = dot( normalize(LIGHTPOS - V[vi]), \
vNormal[vi] );
gLightIntensity = abs( gLightIntensity );
gl_Position = uModelViewProjectionMatrix * vec4( CG + uShrink * ( V[vi] - CG ), 1. );
EmitVertex( );
}
void
main( )
{
V[0] = gl_PositionIn[0].xyz;
V[1] = gl_PositionIn[1].xyz;
V[2] = gl_PositionIn[2].xyz;
CG = ( V[0] + V[1] + V[2] ) / 3.;
ProduceVertex( 0 );
ProduceVertex( 1 );
ProduceVertex( 2 );

}

将每个三角形缩小近中心,书上说这样可以检查模型三角化是否理想

this is useful for examining how fine the triangularization of a particular model is.
examining how fine the triangularization of a particular model is).

抱歉!评论已关闭.