Reuse Normals In Indexbuffer

Hi All,

I have a scene mainly consisting of cubes and as such I expect to only have 6 unique normals ( using flat shading ). I wanted to create meshes where triangles can share vertices AND only uses 6 predefined normals. Sharing vertices using the index buffer is easy, but I cannot figure out there is a way to define normal indexes using different indexes than those used by the vertex buffer… The javadoc seems very sparse on this topic…

I imagined that instead of:


this.setBuffer( Type.Index, 1, BufferUtils.createIntBuffer( int []{ … } ) );


I could define the buffer as:


this.setBuffer( Type.Index, 3, BufferUtils.createIntBuffer( int []{ … } ) );


And then specify indexes for Vertice, Normal and Texture coordinates… Is something like this possible?



No, and if you could I think it would be slow.

For your use-case, it’s easier to hack the .vert shader to use one of several constant normals based on a vertex attribute (maybe a third texture element (x,y,z) instead of just (x,y)) Or reuse one of the other vertex buffer types for the normal direction.

As far as I know, there is no way to decouple the vertex attributes from the vertexes like you propose.

1 Like

Thanks Pspeed,

I thought that might be the case. I will try to make a custom shader for the purpose then, I thought it might end like this sooner or later, tbh.

Thank you for the feedback, valuable as always - thumbs up!