【问题标题】:OpenGLES Shadow VolumeOpenGLES 阴影体积
【发布时间】:2011-10-09 03:14:40
【问题描述】:

我在 iOS 上成功实现了阴影体积。

但是我遇到了以下问题,如何像 NV_depth_clamp 在 GLSL 中那样将顶点位置剪辑到远平面?这是我的顶点着色器代码:

void main( void ) { 

highp vec3 eyepos = vec3( MODELVIEW * vec4( VERTEX, 1.0 ) );

normal = normalize( NORMALMATRIX * NORMAL );

highp vec3 ldir = normalize( LIGHTPOS - eyepos );

highp float ndotl = max( dot( normal, ldir ), 0.0 );

// How can I clip that to the far plane automatically!??!!?
if( ndotl > 0.0 ) gl_Position = PROJECTION * vec4( eyepos + ( ldir * -2000.0 ), 1.0 );

else  gl_Position = PROJECTION * vec4( eyepos, 1.0 );
}

其次,在搜索上面的问题时,我发现shadow volume zfail方法(这是我实现的)获得了专利,是真的吗?这是否意味着我不能在 App Store 的商业应用程序中使用它?

TIA!

【问题讨论】:

    标签: ios opengl-es opengl-es-2.0


    【解决方案1】:

    干杯,在远剪辑平面上,z/w = 1。因此,您需要通过投影变换 eyepos 和 ldir,然后将尽可能多的 ldir 添加到 eyepos 以使其最终到达远平面。不过,这可能会很棘手,因为如果远裁剪平面正好位于其上,则它们可能会裁剪您的多边形,因此可能需要进行一些调整。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 2013-07-14
      相关资源
      最近更新 更多