[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Public WebGL] Unused varyings.



Hmm, but is it legal to declare a varying in the fragment shader, but not in the vertex shader, if the one in the FS is unused?  That sounds like what might be happening here.

    - Vlad

----- Original Message -----
> Before I go off and play with testing on a bunch of different
> configurations...is this actually a legal thing to do?
> 
> 
> 
> It is legal to have a varying that you never use. It is also "legal"
> for the compiler to remove it. The behavior you describe, where a
> removed varying causes a link error, is not legal, and possibly a
> Chrome or driver bug. Try and make sure that the shaders your passing
> into WebGL both have the varying defined.
> 
> 
> The GL (and ES) specs doesn't talk about "active" varyings, as there
> is no way for the app to know what the compiler has done during link
> time. The spec does contain this text hinting that the compiler may
> drop varyings or pack them,
> 
> 
> 
> "A program whose shaders access more than MAX_VARYING_-
> VECTORS worth of varying variables may fail to link, unless
> device-dependent op-
> timizations are able to make the program fit within available hardware
> resources." -- GL-ES 2.0.24 section 2.10.4.
> 
> 
> That said, because of the way DirectX works, you should probably try
> and avoid unused varyings.
> 
> 
> For further reading about varyings you can take a look at
> "GL_NV_transform_feedback" and "GL_EXT_transform_feedback". In the
> original NVIDIA extension you had to declare that you're interested in
> unused varyings before link, in the EXT extension (adopted in GL 3.0)
> you have to declare all of your feedback data prior to link. The end
> result is the same in that the compiler can remove varyings at "link"
> time.
> 
> 
> -- Kenneth Waters
-----------------------------------------------------------
You are currently subscribed to public_webgl@khronos.org.
To unsubscribe, send an email to majordomo@khronos.org with
the following command in the body of your email: