(March 2026) Monthly WIP Screenshot Thread
jMonkeyEngine Hub
March 18, 2026
As for textures, i am using bindless, so i have a large sampler2d array with fixed layout.
texture[ x ] is albedo
texture[ x+1 ] is normal
and so on.
With bindless you can mix texture formats, and every shader in my game has access to the full palette of currently over 700 “materials”
The mesh is actually always the same in this demo, the base model from makehuman. nothing special about that.
The i create a large ssbo that holds the shader parameters. everything per instance data. morph targets/bone animations, textureId’s, worldMatrix, like anything that you would regularly pass as shader parameter.
the animation data is currently stored in a texture, so i do not have to pass the full skeleton for each model.
the mdi call is then basically a slightly better version of instancing, but with the option that it can be generated by a compute shader, and so i get fast culling. (not yet implemented) and that i can cache the parameter ssbo and mdi buffer for the next frame if nothing changes.
the only limitation is that each drawcall must run the same shader. no defines, no whatever. and that as you said, all meshes must be in a single vbo. if you want to render different meshes in one call.
Discussion in the ATmosphere