Opengl 纹理坐标与NV路径渲染
我正在尝试将GLSL片段着色器应用于使用NV路径渲染渲染的某些文本。我的问题是路径渲染不使用顶点着色器,我需要以某种方式将纹理坐标输入片段着色器 我在名为nvpr\u着色器中找到了一个纹理路径的示例,但是这个示例使用cg着色器,并且似乎依赖片段着色器能够处理TEXCOORD0。第15页描述了该方法 我以前没有使用过CG,所以我不完全确定管道是如何工作的。这是示例中的cg着色器:Opengl 纹理坐标与NV路径渲染,opengl,Opengl,我正在尝试将GLSL片段着色器应用于使用NV路径渲染渲染的某些文本。我的问题是路径渲染不使用顶点着色器,我需要以某种方式将纹理坐标输入片段着色器 我在名为nvpr\u着色器中找到了一个纹理路径的示例,但是这个示例使用cg着色器,并且似乎依赖片段着色器能够处理TEXCOORD0。第15页描述了该方法 我以前没有使用过CG,所以我不完全确定管道是如何工作的。这是示例中的cg着色器: void bumpmap(float2 normalMapTexCoord : TEXCOORD0,
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片段着色器中设置纹理坐标?i、 e.我可以在不使用CG工具箱的情况下将纹理坐标输入GLSL frag着色器进行路径渲染吗?您可以根据
gl\u FragCoord
计算所有内容。你试过了吗?这对2D/ortho渲染的文本效果很好,谢谢你的提示。但无法使用透视渲染文本,因为gl_FragCoord“包含片段的窗口相对坐标(x、y、z、1/w)值”-而不是直接渲染。你需要应用单应。这很有意义。。。应用逆mvp矩阵时有些问题正在解决。不是很完美,但有一些东西可以一起工作。。。谢谢你的信息。FWIW我使用的东西大致是vec4q=vec4(gl_FragCoord.xy,1,1)/vec4(res.xy,1,1);mat4 ivp=反向(投影矩阵*uViewMatrix*uModelMatrix);vec4 ndc=vec4((gl_FragCoord.x/uResolution.x-0.5)*2.0,(gl_FragCoord.y/uResolution.y-0.5)*2.0,(gl_FragCoord.z-0.5)*2.0,1.0);vec4 clip=ivp*ndc;vec3顶点=(clip/clip.w).xyz代码>