AMD硬件基本聚焦GLSL片段程序

时间:2012-07-03 06:38:58

标签: opengl glsl gpu amd-processor

我编写了一个GLSL片段程序,它绘制了几个灯光,其中一些灯具有聚光灯效果(即glLightfv带有GL_SPOT_DIRECTION,glLightf带有GL_SPOT_EXPONENT)。该计划的相关摘录如下:

float light_spot(gl_LightSourceParameters light) {
    float dot_LD = dot( normalize(vec_vertex_eye_i-light.position.xyz), normalize(light.spotDirection) );
    float coeff = 1.0 - (1.0-dot_LD)/(1.0-light.spotCosCutoff);
    return (dot_LD>light.spotCosCutoff) ? pow(coeff,light.spotExponent) : 0.0;
}

除了“vec_vertex_eye_i”之外,所有变量都是不言自明的或documented,这是来自顶点着色器的变化的vec3,其中它设置为(gl_ModelViewMatrix * gl_Vertex).xyz。

该程序在NVIDIA硬件上完美运行(在NVIDIA GeForce 8400M GS和NVIDIA GeForce GTX 580M上测试),但在AMD卡(特别是ATI Mobility Radeon HD 4250)上出现错误结果。

我的问题是,在glEnable或其他需要做的其他特殊配置方面是否有任何我可能遗漏的东西。 AMD卡有新的驱动程序,我认为聚光灯是一个不太可能被打破的相当重要的功能。着色器编译得很好。我在这里缺少什么?

0 个答案:

没有答案