我正在尝试将GLSL片段着色器应用于我使用NV路径渲染渲染的某些文本。我的问题是路径渲染不使用顶点着色器,我需要以某种方式将纹理坐标放入我的片段着色器。
我在SDK中找到了一个名为 nvpr_shaders 的纹理路径示例,但此示例使用了cg着色器,并且似乎依赖于片段着色器能够处理TEXCOORD0。第15页的here对此方法进行了描述。
之前我没有使用过CG,所以我不完全确定管道是如何工作的。这是示例中的cg着色器:
void bumpmap(float2 normalMapTexCoord : TEXCOORD0,
float3 lightDir : TEXCOORD1,
out float4 color : COLOR,
uniform float3 lightPos,
uniform sampler2D normalMap)
{
// Normalizes light vector with normalization cube map
float3 light = normalize(lightPos - float3(normalMapTexCoord,0));
// Sample and expand the normal map texture
float3 normalTex = tex2D(normalMap, normalMapTexCoord).xyz;
float3 normal = expand(normalTex);
// Diffuse lighting
float diffuse = dot(normal,light);
// Decide the brick color based on how flat (red) or angled (red) the surface is.
float3 red = float3(1,0,0);
float3 white = float3(1,1,1);
float3 brick = normal.z > 0.9 ? red : white;
color = float4(brick*diffuse,1);
}
是否可以以类似的方式在GLSL片段着色器中设置纹理坐标?即,我可以在不使用CG Toolkit的情况下将纹理坐标转换为GLSL frag着色器以进行路径渲染吗?