UE5VoxelTutorial icon indicating copy to clipboard operation
UE5VoxelTutorial copied to clipboard

[Suggestion] Chunk Materials

Open Ayliroe opened this issue 3 years ago • 3 comments

Here's an implementation I found working you can add to your tutorial:

  • ChunkBase.h: image (A blueprint-accessible array for materials, plus arrays for the material struct and vertices instead of single values)

  • ChunkBase.cpp: image (On clearing, empty the arrays then refresh using the total amount of materials, not blocks)

  • NaiveChunk.cpp, in GenerateMesh(): image (Get the material for the current block's face, minus 2 to skip null and air enums, clamp as a safety, then pass it to CreateFace() )

  • NaiveChunk.cpp, in CreateFace(): image (Switch all mesh structs and the vertex int to the new arrays)

  • GreedyChunk.cpp, GenerateMesh(): image (Same as NaiveChunk, but using CurrentMask.Block for the face's material)

  • ApplyMesh(): image (First clear all previous sections, then generate a new one for each material on the chunk)

Basically the same code as before, but generates one unique section for each different block material. Straightforward to scale-up (just add materials to the array) and supports both naive/greedy meshing. Maybe you had something in mind too of the like.

Ayliroe avatar Jun 26 '22 20:06 Ayliroe

I was pondering on the same issue for a while, I was thinking of having 2 Materials (One base martials with texture arrays) and one for fluids like water with some other effects, for a while I as thinking on creating 2 separate meshed that means 2 runs of meshing algorithms which won't be performant, Didn't think of mesh sections. this is a nice scalable solution. I'll be sure to include this and credit you.

Thanks

BLaZeKiLL avatar Jun 29 '22 18:06 BLaZeKiLL

What is GetID on the third image?

jorgeEsat avatar May 02 '24 11:05 jorgeEsat