Opengl ';变量';:在当前GLSL版本gl_TexCoord中不可用

Opengl ';变量';:在当前GLSL版本gl_TexCoord中不可用,opengl,glsl,shader,Opengl,Glsl,Shader,我在vizard IDE中编写了一个片段着色器,但它不起作用。该代码没有编译错误,只有一个代码说:“错误:0:?:‘变量’:在当前GLSL版本gl_TexCoord中不可用。” 仅供参考,gl_TexCoord是vizard内置顶点着色器的输出。有人能帮我修一下吗。代码如下: #版本440 //Vizard提供的所有制服 统一采样器2D vizpp_InputDepthTex;//深度纹理 统一采样器2D vizpp_InputEx;//颜色纹理 统一ivec2 vizpp_输入大小;//以像素

我在vizard IDE中编写了一个片段着色器,但它不起作用。该代码没有编译错误,只有一个代码说:“错误:0:?:‘变量’:在当前GLSL版本gl_TexCoord中不可用。” 仅供参考,gl_TexCoord是vizard内置顶点着色器的输出。有人能帮我修一下吗。代码如下:

#版本440
//Vizard提供的所有制服
统一采样器2D vizpp_InputDepthTex;//深度纹理
统一采样器2D vizpp_InputEx;//颜色纹理
统一ivec2 vizpp_输入大小;//以像素为单位渲染屏幕大小
均匀ivec2 vizpp_输入像素大小;//像素大小(1.0/vizpp_输入大小)
统一mat4 osg_ViewMatrix;//摄像机视场矩阵
统一mat4 osg_ViewMatrixInverse;//视图矩阵的逆
//你自己的制服
//均匀的二维u_纹理;
//均匀的二维u_法线纹理;
统一采样器2D g_FinalSSAO;
const bool onlyAO=false//仅显示用于调试的AO pass
const bool externalBlur=false//将AO存储在alpha插槽中,以便稍后进行模糊
结构ASSAOConstants
{
vec2视口像素大小;//.zw==1.0/ViewportSize.xy
vec2 HalfViewportPixelSize;//.zw==1.0/ViewportHalfSize.xy
vec2深度包常数;
vec2 Cameratanhalfov;
vec2-NDCToViewMul;
vec2-NDCToViewAdd;
ivec2每通过一次重新扫描偏移量;
vec2每通过一次再偏移;
vec2视口2xPixelsize;
vec2视口2xPixelsize\u x\u 025;//视口2xPixelsize*0.25(用于将add+mul融合到mad中)
float EffectRadius;//阴影的世界(viewspace)最大大小
float EffectsShadowStrength;//效果的全局强度(0-5)
浮力;
浮子夹;
float EffectFadeOutMul;//效果从距离淡出(例如25)
float effectfadeout;//效果淡出到距离(例如100)
float EffectHorizonAngleThreshold;//限制由几何体细分不足(0.05到0.5)引起的坡度错误
float effectSamplingGradiusEarlimitRec;//如果viewspace像素比这更接近,请不要再放大阴影采样半径(超出一定距离是没有意义的,因为没有足够的采样覆盖所有内容,所以只需限制阴影增长;可能是SSAOSettingsFadeOutFrom*0.1或更小)
浮动深度精度偏移量;
浮动NegroceEffectRadius;//-1.0/效应半径
浮动加载计数器AVGDIV;//1.0/(半深度IP[SSAO_深度MIP_级别-1]。sizeX*半深度IP[SSAO_深度MIP_级别-1]。sizeY)
浮动自适应采样计数限值;
流动性和锐度;
int-PassIndex;
vec2 quartrespixelsize;//仅用于重要性映射
vec4模式标度矩阵[5];
浮动正常SUNPACKMUL;
浮动正常包装;
浮力;
浮动Dummy0;
mat4 NormalsWorld视图空间矩阵;
};
统一的阿萨康斯坦斯g_阿萨康斯坦斯;
浮点PSApply(在vec4 inPos中,在vec2 inUV中)
{//inPos=gl_FragCoord;
浮动ao;
uvec2-pixPos=uvec2(inPos.xy);
uvec2-pixPosHalf=pixPos/uvec2(2,2);
//计算四个解交错源阵列纹理中的索引
int mx=int(pixPos.x%2);
int my=int(pixPos.y%2);
int ic=mx+my*2;//中心索引
int ih=(1-mx)+my*2;//相邻,水平
int iv=mx+(1-my)*2;//相邻,垂直
int id=(1-mx)+(1-my)*2;//对角线
vec2 centerVal=texelFetchOffset(g_FinalSSAO,ivec2(pixPosHalf),0,ivec2(ic,0)).xy;
ao=中心值.x;
if(true){//如果要禁用最后一次高分辨率模糊(用于调试等目的),请更改为0
vec4 edgesLRTB=未展开的边(中心值y);
//将索引偏移转换为采样偏移
浮点数fmx=mx;
float fmy=my;
//对于边,将采样偏移推离边(朝向像素中心)
float fmxe=(edgesLRTB.y-edgesLRTB.x);
float fmye=(edgesLRTB.w-edgesLRTB.z);
//使用双线性滤波器计算最终采样偏移和采样
vec2 uvH=(inPos.xy+vec2(fmx+fmxe-0.5,0.5-fmy))*0.5*g_ASSAOConsts.HalfViewportPixelSize;
浮动aoH=纹理偏移(g_FinalSSAO,uvH,0,ivec2(ih,0)).x;
vec2 uvV=(inPos.xy+vec2(0.5-fmx,fmy-0.5+fmye))*0.5*g_ASSAOConsts.HalfViewportPixelSize;
浮动aoV=纹理偏移(g_FinalSSAO,uvV,0,ivec2(iv,0)).x;
vec2 uvD=(inPos.xy+vec2(fmx-0.5+fmxe,fmy-0.5+fmye))*0.5*g_ASSAOConsts.HalfViewportPixelSize;
浮动aoD=纹理偏移(g_FinalSSAO,uvD,0,ivec2(id,0)).x;
//减少边缘附近样本的重量-如果边缘位于两侧,则重量变为0
vec4混合砝码;
混合重量x=1.0;
混合重量y=(edgesLRTB.x+edgesLRTB.y)*0.5;
混合重量z=(edgesLRTB.z+edgesLRTB.w)*0.5;
混合重量w=(混合重量y+混合重量z)*0.5;
//计算加权平均数
浮动混合重量总和=点(混合重量,向量4(1.0,1.0,1.0,1.0));
ao=点(vec4(ao,aoH,aoV,aoD),混合重量)/混合重量总和;
}
返回ao;
}
真空总管(真空)
{
//获取基本值
vec2 texCoord=gl_texCoord[0].st;
vec4颜色=纹理2D(vizpp_InputEx,texCoord);
浮动深度=纹理2d(即输入深度tex,texCoord).x;
//如果没有可见的内容,则不进行计算(例如VR)
如果(深度>=1.0)
{ 
gl_FragColor=颜色;
返回;
}                   
浮动ao=PSApply(德国联邦弗拉格库德、德士库德);
//输出结果