feat: vox_loader normals and new voxels shader (#3843)

This commit is contained in:
johann nadalutti
2024-02-29 18:28:51 +01:00
committed by GitHub
parent 077ab6d56b
commit 53221eb799
7 changed files with 455 additions and 82 deletions

View File

@ -123,6 +123,7 @@ typedef struct {
// Arrays for mesh build
ArrayVector3 vertices;
ArrayVector3 normals;
ArrayUShort indices;
ArrayColor colors;
@ -292,6 +293,16 @@ const VoxVector3 SolidVertex[] = {
{1, 1, 1} //7
};
const VoxVector3 FacesPerSideNormal[] = {
{ -1, 0, 0 }, //-X
{1, 0, 0 }, //+X
{0,-1, 0}, //-Y
{0, 1, 0}, //+Y
{0, 0, -1}, //-Z
{0, 0, 1}, //+Z
};
// Allocated VoxArray3D size
static void Vox_AllocArray(VoxArray3D* pvoxarray, int _sx, int _sy, int _sz)
{
@ -508,6 +519,11 @@ static void Vox_Build_Voxel(VoxArray3D* pvoxArray, int x, int y, int z, int matI
insertArrayVector3(&pvoxArray->vertices, vertComputed[v2]);
insertArrayVector3(&pvoxArray->vertices, vertComputed[v3]);
insertArrayVector3(&pvoxArray->normals, FacesPerSideNormal[i]);
insertArrayVector3(&pvoxArray->normals, FacesPerSideNormal[i]);
insertArrayVector3(&pvoxArray->normals, FacesPerSideNormal[i]);
insertArrayVector3(&pvoxArray->normals, FacesPerSideNormal[i]);
VoxColor col = pvoxArray->palette[matID];
insertArrayColor(&pvoxArray->colors, col);
@ -653,6 +669,7 @@ int Vox_LoadFromMemory(unsigned char* pvoxData, unsigned int voxDataSize, VoxArr
// Init Arrays
initArrayVector3(&pvoxarray->vertices, 3 * 1024);
initArrayVector3(&pvoxarray->normals, 3 * 1024);
initArrayUShort(&pvoxarray->indices, 3 * 1024);
initArrayColor(&pvoxarray->colors, 3 * 1024);