How can I improve the performance of my custom OpenGL ES 2.0 depth texture generation?

Based on the recommendations by Tommy, Pivot, and rotoglup, I’ve implemented some optimizations which have led to a doubling of the rendering speed for the both the depth texture generation and the overall rendering pipeline in the application. First, I re-enabled the precalculated sphere depth and lighting texture that I’d used before with little effect, … Read more

printf in GLSL?

Unfortunately it’s not possible directly. One possible solution though, that I end up using a lot (but I’m sure it’s pretty common among GLSL developers) is to “print” values as colors, in place of your intended final result. Of course this has many limitations; for one, you have to make sure that your value maps … Read more

What does sampler2D store?

The sampler2D is bound to a texture unit. The glUniform call binds it to texture unit zero. The glActiveTexture() call is only needed if you are going to use multiple texture units (because GL_TEXTURE0 is the default anyway).

Passing a list of values to fragment shader

There are currently 4 ways to do this: standard 1D textures, buffer textures, uniform buffers, and shader storage buffers. 1D Textures With this method, you use glTex(Sub)Image1D to fill a 1D texture with your data. Since your data is just an array of floats, your image format should be GL_R32F. You then access it in … Read more

How to calculate Tangent and Binormal?

The relevant input data to your problem are the texture coordinates. Tangent and Binormal are vectors locally parallel to the object’s surface. And in the case of normal mapping they’re describing the local orientation of the normal texture. So you have to calculate the direction (in the model’s space) in which the texturing vectors point. … Read more

Should I ever use a `vec3` inside of a uniform buffer or shader storage buffer object?

NO! Never do this! When declaring UBOs/SSBOs, pretend that all 3-element vector types don’t exist. This includes column-major matrices with 3 rows or row-major matrices with 3 columns. Pretend that the only types are scalars, 2, and 4 element vectors (and matrices). You will save yourself a very great deal of grief if you do … Read more