opengl - GLSL linker error(Sampler needs to be a uniform (global or parameter to main)) -
we have glsl fragment shader : problem in code
vec4 tfselection(strvolumecolormap volumecolormap , vec4 texturecoordinate) { vec4 finalcolor = vec4(0.0); if(volumecolormap.transferfunctions[0].numberofbits == 0) { return texture(volumecolormap.transferfunctions[0].transferfunctionid,texturecoordinate.x); } if(texturecoordinate.x == 0) return finalcolor; float denormalize = texturecoordinate.x *65535/*255*/; for(int = 0; < volumecolormap.transferfunctions.length(); i++) { int normfactor = volumecolormap.transferfunctions[i].startbit + volumecolormap.transferfunctions[i].numberofbits; float minval = calculatepower(2, volumecolormap.transferfunctions[i].startbit); if(denormalize >= minval) { float maxval = calculatepower(2, normfactor); if(denormalize <maxval) { //float temppower = calculatepower(2 , normfactor); float coord = denormalize /maxval/*temppower*/; return texture(volumecolormap.transferfunctions[i].transferfunctionid,coord); } } } return finalcolor; }
when compile , link shader message logs:
sampler needs uniform (global or parameter main), need inline function or resolve conditional expression
with simple change maybe shader link changing
float `coord = denormalize /maxval
to
float coord = denormalize .`
driver:nvidia 320.49
Comments
Post a Comment