minecraft: draw world
This is currently off-screen, because no view/projection transform is sent to the vertex shader.
This commit is contained in:
parent
8102ad7870
commit
4cc844addf
3
Makefile
3
Makefile
@ -51,7 +51,8 @@ OBJS = \
|
|||||||
src/collada/animate.o \
|
src/collada/animate.o \
|
||||||
src/minecraft/world.o \
|
src/minecraft/world.o \
|
||||||
src/minecraft/entry_table.o \
|
src/minecraft/entry_table.o \
|
||||||
src/minecraft/vulkan.o
|
src/minecraft/vulkan.o \
|
||||||
|
src/minecraft/vulkan/per_world.o
|
||||||
|
|
||||||
WORLDS = \
|
WORLDS = \
|
||||||
data/minecraft/midnightmeadow/inthash.o \
|
data/minecraft/midnightmeadow/inthash.o \
|
||||||
|
|||||||
BIN
data/minecraft/grandlecturn/global.dump
Normal file
BIN
data/minecraft/grandlecturn/global.dump
Normal file
Binary file not shown.
BIN
data/minecraft/grandlecturn/global.lights.vtx
Normal file
BIN
data/minecraft/grandlecturn/global.lights.vtx
Normal file
Binary file not shown.
BIN
data/minecraft/grandlecturn/region.-1.-1.instance.cfg
Normal file
BIN
data/minecraft/grandlecturn/region.-1.-1.instance.cfg
Normal file
Binary file not shown.
BIN
data/minecraft/grandlecturn/region.-1.-1.instance.vtx
Normal file
BIN
data/minecraft/grandlecturn/region.-1.-1.instance.vtx
Normal file
Binary file not shown.
BIN
data/minecraft/grandlecturn/region.-1.0.instance.cfg
Normal file
BIN
data/minecraft/grandlecturn/region.-1.0.instance.cfg
Normal file
Binary file not shown.
BIN
data/minecraft/grandlecturn/region.-1.0.instance.vtx
Normal file
BIN
data/minecraft/grandlecturn/region.-1.0.instance.vtx
Normal file
Binary file not shown.
BIN
data/minecraft/grandlecturn/region.0.-1.instance.cfg
Normal file
BIN
data/minecraft/grandlecturn/region.0.-1.instance.cfg
Normal file
Binary file not shown.
BIN
data/minecraft/grandlecturn/region.0.-1.instance.vtx
Normal file
BIN
data/minecraft/grandlecturn/region.0.-1.instance.vtx
Normal file
Binary file not shown.
BIN
data/minecraft/grandlecturn/region.0.0.instance.cfg
Normal file
BIN
data/minecraft/grandlecturn/region.0.0.instance.cfg
Normal file
Binary file not shown.
BIN
data/minecraft/grandlecturn/region.0.0.instance.vtx
Normal file
BIN
data/minecraft/grandlecturn/region.0.0.instance.vtx
Normal file
Binary file not shown.
BIN
data/minecraft/midnightmeadow/global.dump
Normal file
BIN
data/minecraft/midnightmeadow/global.dump
Normal file
Binary file not shown.
0
data/minecraft/midnightmeadow/global.lights.vtx
Normal file
0
data/minecraft/midnightmeadow/global.lights.vtx
Normal file
BIN
data/minecraft/midnightmeadow/region.-1.-1.instance.cfg
Normal file
BIN
data/minecraft/midnightmeadow/region.-1.-1.instance.cfg
Normal file
Binary file not shown.
BIN
data/minecraft/midnightmeadow/region.-1.-1.instance.vtx
Normal file
BIN
data/minecraft/midnightmeadow/region.-1.-1.instance.vtx
Normal file
Binary file not shown.
BIN
data/minecraft/midnightmeadow/region.-1.0.instance.cfg
Normal file
BIN
data/minecraft/midnightmeadow/region.-1.0.instance.cfg
Normal file
Binary file not shown.
BIN
data/minecraft/midnightmeadow/region.-1.0.instance.vtx
Normal file
BIN
data/minecraft/midnightmeadow/region.-1.0.instance.vtx
Normal file
Binary file not shown.
BIN
data/minecraft/midnightmeadow/region.0.-1.instance.cfg
Normal file
BIN
data/minecraft/midnightmeadow/region.0.-1.instance.cfg
Normal file
Binary file not shown.
BIN
data/minecraft/midnightmeadow/region.0.-1.instance.vtx
Normal file
BIN
data/minecraft/midnightmeadow/region.0.-1.instance.vtx
Normal file
Binary file not shown.
BIN
data/minecraft/midnightmeadow/region.0.0.instance.cfg
Normal file
BIN
data/minecraft/midnightmeadow/region.0.0.instance.cfg
Normal file
Binary file not shown.
BIN
data/minecraft/midnightmeadow/region.0.0.instance.vtx
Normal file
BIN
data/minecraft/midnightmeadow/region.0.0.instance.vtx
Normal file
Binary file not shown.
@ -7,3 +7,29 @@ data/scenes/eidelwind/eidelwind.vtx
|
|||||||
data/scenes/eidelwind/eidelwind.vjw
|
data/scenes/eidelwind/eidelwind.vjw
|
||||||
data/scenes/eidelwind/eidelwind.idx
|
data/scenes/eidelwind/eidelwind.idx
|
||||||
data/scenes/eidelwind/images/0_EidelWindTextureTest.dds
|
data/scenes/eidelwind/images/0_EidelWindTextureTest.dds
|
||||||
|
|
||||||
|
shader/minecraft.spv
|
||||||
|
data/minecraft/per_vertex.vtx
|
||||||
|
data/minecraft/configuration.idx
|
||||||
|
|
||||||
|
data/minecraft/grandlecturn/region.0.0.instance.vtx
|
||||||
|
data/minecraft/grandlecturn/region.-1.0.instance.vtx
|
||||||
|
data/minecraft/grandlecturn/region.0.-1.instance.vtx
|
||||||
|
data/minecraft/grandlecturn/region.-1.-1.instance.vtx
|
||||||
|
data/minecraft/grandlecturn/region.0.0.instance.cfg
|
||||||
|
data/minecraft/grandlecturn/region.-1.0.instance.cfg
|
||||||
|
data/minecraft/grandlecturn/region.0.-1.instance.cfg
|
||||||
|
data/minecraft/grandlecturn/region.-1.-1.instance.cfg
|
||||||
|
data/minecraft/grandlecturn/global.dump
|
||||||
|
data/minecraft/grandlecturn/global.lights.vtx
|
||||||
|
|
||||||
|
data/minecraft/midnightmeadow/region.0.0.instance.vtx
|
||||||
|
data/minecraft/midnightmeadow/region.-1.0.instance.vtx
|
||||||
|
data/minecraft/midnightmeadow/region.0.-1.instance.vtx
|
||||||
|
data/minecraft/midnightmeadow/region.-1.-1.instance.vtx
|
||||||
|
data/minecraft/midnightmeadow/region.0.0.instance.cfg
|
||||||
|
data/minecraft/midnightmeadow/region.-1.0.instance.cfg
|
||||||
|
data/minecraft/midnightmeadow/region.0.-1.instance.cfg
|
||||||
|
data/minecraft/midnightmeadow/region.-1.-1.instance.cfg
|
||||||
|
data/minecraft/midnightmeadow/global.dump
|
||||||
|
data/minecraft/midnightmeadow/global.lights.vtx
|
||||||
|
|||||||
@ -35,6 +35,17 @@ namespace minecraft::vulkan {
|
|||||||
|
|
||||||
per_world * worlds;
|
per_world * worlds;
|
||||||
|
|
||||||
|
static constexpr int perVertexSize = (3 + 3 + 2) * 2;
|
||||||
|
static constexpr int perInstanceSize = (3 + 1 + 3 + 1) * 2;
|
||||||
|
|
||||||
|
void initial_state(VkInstance instance,
|
||||||
|
VkDevice device,
|
||||||
|
VkQueue queue,
|
||||||
|
VkCommandPool commandPool,
|
||||||
|
VkPhysicalDeviceProperties physicalDeviceProperties,
|
||||||
|
VkPhysicalDeviceMemoryProperties physicalDeviceMemoryProperties,
|
||||||
|
VkFormat colorFormat,
|
||||||
|
VkFormat depthFormat);
|
||||||
void init();
|
void init();
|
||||||
void load_vertex_index_buffer(char const * vertex_filename,
|
void load_vertex_index_buffer(char const * vertex_filename,
|
||||||
char const * index_filename);
|
char const * index_filename);
|
||||||
|
|||||||
31
shader/minecraft.hlsl
Normal file
31
shader/minecraft.hlsl
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
struct VSInput
|
||||||
|
{
|
||||||
|
float3 Position : POSITION0;
|
||||||
|
float3 Normal : NORMAL0;
|
||||||
|
float2 Texture : TEXCOORD0;
|
||||||
|
// per-instance
|
||||||
|
int3 BlockPosition : BlockPosition;
|
||||||
|
int Blockid : BlockID;
|
||||||
|
int Data : Data;
|
||||||
|
int TextureID : TextureID;
|
||||||
|
int Special : Special;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct VSOutput
|
||||||
|
{
|
||||||
|
float4 Position : SV_POSITION;
|
||||||
|
};
|
||||||
|
|
||||||
|
[shader("vertex")]
|
||||||
|
VSOutput VSMain(VSInput input)
|
||||||
|
{
|
||||||
|
VSOutput output = (VSOutput)0;
|
||||||
|
output.Position = float4(input.Position.xyz + input.BlockPosition, 1.0);
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
[shader("pixel")]
|
||||||
|
float4 PSMain(VSOutput input) : SV_TARGET
|
||||||
|
{
|
||||||
|
return float4(1, 0, 0, 1);
|
||||||
|
}
|
||||||
19
src/main.cpp
19
src/main.cpp
@ -18,6 +18,8 @@
|
|||||||
#include "collada/scene.h"
|
#include "collada/scene.h"
|
||||||
#include "collada/scene/vulkan.h"
|
#include "collada/scene/vulkan.h"
|
||||||
|
|
||||||
|
#include "minecraft/vulkan.h"
|
||||||
|
|
||||||
#include "scenes/shadow_test/shadow_test.h"
|
#include "scenes/shadow_test/shadow_test.h"
|
||||||
#include "scenes/eidelwind/eidelwind.h"
|
#include "scenes/eidelwind/eidelwind.h"
|
||||||
|
|
||||||
@ -595,6 +597,21 @@ int main()
|
|||||||
collada::types::descriptor const * collada_scene_descriptor = &eidelwind::descriptor;
|
collada::types::descriptor const * collada_scene_descriptor = &eidelwind::descriptor;
|
||||||
collada_state.load_scene(collada_scene_descriptor);
|
collada_state.load_scene(collada_scene_descriptor);
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// initialize minecraft
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
minecraft::vulkan::vulkan minecraft_state;
|
||||||
|
minecraft_state.initial_state(instance,
|
||||||
|
device,
|
||||||
|
queue,
|
||||||
|
commandPool,
|
||||||
|
physicalDeviceProperties,
|
||||||
|
physicalDeviceMemoryProperties,
|
||||||
|
surfaceFormat.format,
|
||||||
|
depthFormat);
|
||||||
|
minecraft_state.init();
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// loop
|
// loop
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
@ -905,6 +922,8 @@ int main()
|
|||||||
//collada_state.vulkan.pipelineIndex = 2; // geometry shader pipeline
|
//collada_state.vulkan.pipelineIndex = 2; // geometry shader pipeline
|
||||||
//collada_state.draw();
|
//collada_state.draw();
|
||||||
|
|
||||||
|
minecraft_state.draw(commandBuffer);
|
||||||
|
|
||||||
vkCmdEndRendering(commandBuffer);
|
vkCmdEndRendering(commandBuffer);
|
||||||
|
|
||||||
// barrier
|
// barrier
|
||||||
|
|||||||
@ -10,8 +10,10 @@
|
|||||||
#include "new.h"
|
#include "new.h"
|
||||||
#include "popcount.h"
|
#include "popcount.h"
|
||||||
|
|
||||||
#include "minecraft/vulkan.h"
|
|
||||||
#include "minecraft/data.inc"
|
#include "minecraft/data.inc"
|
||||||
|
#include "minecraft/world.h"
|
||||||
|
#include "minecraft/vulkan.h"
|
||||||
|
#include "minecraft/vulkan/per_world.h"
|
||||||
|
|
||||||
namespace minecraft::vulkan {
|
namespace minecraft::vulkan {
|
||||||
|
|
||||||
@ -20,11 +22,33 @@ namespace minecraft::vulkan {
|
|||||||
return __builtin_popcount(x);
|
return __builtin_popcount(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vulkan::initial_state(VkInstance instance,
|
||||||
|
VkDevice device,
|
||||||
|
VkQueue queue,
|
||||||
|
VkCommandPool commandPool,
|
||||||
|
VkPhysicalDeviceProperties physicalDeviceProperties,
|
||||||
|
VkPhysicalDeviceMemoryProperties physicalDeviceMemoryProperties,
|
||||||
|
VkFormat colorFormat,
|
||||||
|
VkFormat depthFormat)
|
||||||
|
{
|
||||||
|
this->instance = instance;
|
||||||
|
this->device = device;
|
||||||
|
this->queue = queue;
|
||||||
|
this->commandPool = commandPool;
|
||||||
|
|
||||||
|
this->physicalDeviceProperties = physicalDeviceProperties;
|
||||||
|
this->physicalDeviceMemoryProperties = physicalDeviceMemoryProperties;
|
||||||
|
|
||||||
|
this->colorFormat = colorFormat;
|
||||||
|
this->depthFormat = depthFormat;
|
||||||
|
}
|
||||||
|
|
||||||
void vulkan::init()
|
void vulkan::init()
|
||||||
{
|
{
|
||||||
load_vertex_index_buffer("data/minecraft/per_vertex.vtx", "data/minecraft/configuration.idx");
|
load_vertex_index_buffer("data/minecraft/per_vertex.vtx", "data/minecraft/configuration.idx");
|
||||||
load_shader();
|
load_shader();
|
||||||
create_pipeline();
|
create_pipeline();
|
||||||
|
load_worlds();
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
@ -213,8 +237,6 @@ namespace minecraft::vulkan {
|
|||||||
.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT
|
.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr int perVertexSize = (3 + 3 + 2) * 2;
|
|
||||||
constexpr int perInstanceSize = (3 + 1 + 3 + 1) * 2;
|
|
||||||
VkVertexInputBindingDescription vertexBindingDescriptions[2]{
|
VkVertexInputBindingDescription vertexBindingDescriptions[2]{
|
||||||
{
|
{
|
||||||
.binding = 0,
|
.binding = 0,
|
||||||
@ -330,11 +352,25 @@ namespace minecraft::vulkan {
|
|||||||
void vulkan::draw(VkCommandBuffer commandBuffer)
|
void vulkan::draw(VkCommandBuffer commandBuffer)
|
||||||
{
|
{
|
||||||
vkCmdBindIndexBuffer(commandBuffer, vertexIndex.buffer, vertexIndex.indexOffset, VK_INDEX_TYPE_UINT16);
|
vkCmdBindIndexBuffer(commandBuffer, vertexIndex.buffer, vertexIndex.indexOffset, VK_INDEX_TYPE_UINT16);
|
||||||
|
VkBuffer vertexBuffers[2]{
|
||||||
|
vertexIndex.buffer,
|
||||||
|
worlds[0].regions[0].vertexBuffer,
|
||||||
|
};
|
||||||
|
VkDeviceSize vertexOffsets[2]{ 0, 0 };
|
||||||
|
|
||||||
|
vkCmdBindVertexBuffers(commandBuffer, 0, 2, vertexBuffers, vertexOffsets);
|
||||||
|
vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
|
||||||
|
|
||||||
for (int configuration = 1; configuration < 64; configuration++) {
|
for (int configuration = 1; configuration < 64; configuration++) {
|
||||||
int element_count = 6 * popcount(configuration);
|
int index_count = 6 * popcount(configuration);
|
||||||
int index_offset = 2 * index_buffer_configuration_offsets[configuration];
|
int first_index = index_buffer_configuration_offsets[configuration];
|
||||||
int instance_count = worlds[;
|
int instance_count = worlds[0].regions[0].instanceCFG[configuration].count;
|
||||||
|
int first_instance = worlds[0].regions[0].instanceCFG[configuration].offset / perInstanceSize;
|
||||||
|
|
||||||
|
if (instance_count == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
vkCmdDrawIndexed(commandBuffer, index_count, instance_count, first_index, 0, first_instance);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
104
src/minecraft/vulkan/per_world.cpp
Normal file
104
src/minecraft/vulkan/per_world.cpp
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "volk/volk.h"
|
||||||
|
#include "vulkan/vk_enum_string_helper.h"
|
||||||
|
|
||||||
|
#include "new.h"
|
||||||
|
#include "file.h"
|
||||||
|
#include "check.h"
|
||||||
|
#include "vulkan_helper.h"
|
||||||
|
|
||||||
|
#include "minecraft/vulkan/per_world.h"
|
||||||
|
|
||||||
|
namespace minecraft::vulkan {
|
||||||
|
|
||||||
|
void per_world::load_regions(VkDevice device,
|
||||||
|
VkPhysicalDeviceProperties const & physicalDeviceProperties,
|
||||||
|
VkPhysicalDeviceMemoryProperties const & physicalDeviceMemoryProperties,
|
||||||
|
world::descriptor const * const descriptor)
|
||||||
|
{
|
||||||
|
uint32_t * sizes = NewM<uint32_t>(descriptor->region_count);
|
||||||
|
void const ** starts = NewM<void const *>(descriptor->region_count);
|
||||||
|
|
||||||
|
VkMemoryRequirements * memoryRequirements = NewM<VkMemoryRequirements>(descriptor->region_count);
|
||||||
|
for (int i = 0; i < descriptor->region_count; i++) {
|
||||||
|
starts[i] = file::open(descriptor->vertex_paths[i].vtx, &sizes[i]);
|
||||||
|
|
||||||
|
VkBufferCreateInfo bufferCreateInfo{
|
||||||
|
.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
|
||||||
|
.size = sizes[i],
|
||||||
|
.usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
|
||||||
|
.sharingMode = VK_SHARING_MODE_EXCLUSIVE
|
||||||
|
};
|
||||||
|
VK_CHECK(vkCreateBuffer(device, &bufferCreateInfo, nullptr, ®ions[i].vertexBuffer));
|
||||||
|
vkGetBufferMemoryRequirements(device, regions[i].vertexBuffer, &memoryRequirements[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
VkDeviceSize * offsets = NewM<VkDeviceSize>(descriptor->region_count);
|
||||||
|
VkMemoryPropertyFlags memoryPropertyFlags{ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT };
|
||||||
|
VkMemoryAllocateFlags memoryAllocateFlags{ };
|
||||||
|
allocateFromMemoryRequirements2(device,
|
||||||
|
physicalDeviceProperties.limits.nonCoherentAtomSize,
|
||||||
|
physicalDeviceMemoryProperties,
|
||||||
|
memoryPropertyFlags,
|
||||||
|
memoryAllocateFlags,
|
||||||
|
descriptor->region_count,
|
||||||
|
memoryRequirements,
|
||||||
|
®ionVertexMemory,
|
||||||
|
offsets);
|
||||||
|
|
||||||
|
VkDeviceSize offset{ 0 };
|
||||||
|
VkDeviceSize size{ VK_WHOLE_SIZE };
|
||||||
|
VkMemoryMapFlags flags{ 0 };
|
||||||
|
void * mappedData;
|
||||||
|
VK_CHECK(vkMapMemory(device, regionVertexMemory, offset, size, flags, &mappedData));
|
||||||
|
|
||||||
|
for (int i = 0; i < descriptor->region_count; i++) {
|
||||||
|
VK_CHECK(vkBindBufferMemory(device, regions[i].vertexBuffer, regionVertexMemory, offsets[i]));
|
||||||
|
void * data = (void *)(((size_t)mappedData) + offsets[i]);
|
||||||
|
memcpy(data, starts[i], sizes[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
VkMappedMemoryRange mappedMemoryRange{
|
||||||
|
.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
|
||||||
|
.memory = regionVertexMemory,
|
||||||
|
.offset = 0,
|
||||||
|
.size = VK_WHOLE_SIZE,
|
||||||
|
};
|
||||||
|
vkFlushMappedMemoryRanges(device, 1, &mappedMemoryRange);
|
||||||
|
|
||||||
|
vkUnmapMemory(device, regionVertexMemory);
|
||||||
|
|
||||||
|
free(offsets);
|
||||||
|
free(sizes);
|
||||||
|
free(starts);
|
||||||
|
|
||||||
|
// instance-cfg
|
||||||
|
for (int i = 0; i < descriptor->region_count; i++) {
|
||||||
|
uint32_t size;
|
||||||
|
void const * start = file::open(descriptor->vertex_paths[i].cfg, &size);
|
||||||
|
assert(size == (world::instance_cfg_length * (sizeof (world::instance_cfg_entry))));
|
||||||
|
regions[i].instanceCFG = (world::instance_cfg_entry *)start;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void per_world::load(VkDevice device,
|
||||||
|
VkPhysicalDeviceProperties const & physicalDeviceProperties,
|
||||||
|
VkPhysicalDeviceMemoryProperties const & physicalDeviceMemoryProperties,
|
||||||
|
world::descriptor const * const descriptor)
|
||||||
|
{
|
||||||
|
this->descriptor = descriptor;
|
||||||
|
regions = NewM<region>(descriptor->region_count);
|
||||||
|
load_regions(device,
|
||||||
|
physicalDeviceProperties,
|
||||||
|
physicalDeviceMemoryProperties,
|
||||||
|
descriptor);
|
||||||
|
|
||||||
|
// collision data
|
||||||
|
entry_table::load_entry_table(descriptor->entry_table_path,
|
||||||
|
&entry_table,
|
||||||
|
&entry_table_length,
|
||||||
|
descriptor->hash_func);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -3,17 +3,17 @@
|
|||||||
|
|
||||||
namespace minecraft::world {
|
namespace minecraft::world {
|
||||||
static vtx_cfg const grandlecturn_vertex_paths[] = {
|
static vtx_cfg const grandlecturn_vertex_paths[] = {
|
||||||
{ "minecraft/grandlecturn/region.0.0.instance.vtx", "minecraft/grandlecturn/region.0.0.instance.cfg" },
|
{ "data/minecraft/grandlecturn/region.0.0.instance.vtx", "data/minecraft/grandlecturn/region.0.0.instance.cfg" },
|
||||||
{ "minecraft/grandlecturn/region.-1.0.instance.vtx", "minecraft/grandlecturn/region.-1.0.instance.cfg" },
|
{ "data/minecraft/grandlecturn/region.-1.0.instance.vtx", "data/minecraft/grandlecturn/region.-1.0.instance.cfg" },
|
||||||
{ "minecraft/grandlecturn/region.0.-1.instance.vtx", "minecraft/grandlecturn/region.0.-1.instance.cfg" },
|
{ "data/minecraft/grandlecturn/region.0.-1.instance.vtx", "data/minecraft/grandlecturn/region.0.-1.instance.cfg" },
|
||||||
{ "minecraft/grandlecturn/region.-1.-1.instance.vtx", "minecraft/grandlecturn/region.-1.-1.instance.cfg" },
|
{ "data/minecraft/grandlecturn/region.-1.-1.instance.vtx", "data/minecraft/grandlecturn/region.-1.-1.instance.cfg" },
|
||||||
};
|
};
|
||||||
|
|
||||||
static vtx_cfg const midnightmeadow_vertex_paths[] = {
|
static vtx_cfg const midnightmeadow_vertex_paths[] = {
|
||||||
{ "minecraft/midnightmeadow/region.0.0.instance.vtx", "minecraft/midnightmeadow/region.0.0.instance.cfg" },
|
{ "data/minecraft/midnightmeadow/region.0.0.instance.vtx", "data/minecraft/midnightmeadow/region.0.0.instance.cfg" },
|
||||||
{ "minecraft/midnightmeadow/region.-1.0.instance.vtx", "minecraft/midnightmeadow/region.-1.0.instance.cfg" },
|
{ "data/minecraft/midnightmeadow/region.-1.0.instance.vtx", "data/minecraft/midnightmeadow/region.-1.0.instance.cfg" },
|
||||||
{ "minecraft/midnightmeadow/region.0.-1.instance.vtx", "minecraft/midnightmeadow/region.0.-1.instance.cfg" },
|
{ "data/minecraft/midnightmeadow/region.0.-1.instance.vtx", "data/minecraft/midnightmeadow/region.0.-1.instance.cfg" },
|
||||||
{ "minecraft/midnightmeadow/region.-1.-1.instance.vtx", "minecraft/midnightmeadow/region.-1.-1.instance.cfg" },
|
{ "data/minecraft/midnightmeadow/region.-1.-1.instance.vtx", "data/minecraft/midnightmeadow/region.-1.-1.instance.cfg" },
|
||||||
};
|
};
|
||||||
|
|
||||||
descriptor const descriptors[] = {
|
descriptor const descriptors[] = {
|
||||||
@ -21,16 +21,16 @@ namespace minecraft::world {
|
|||||||
{
|
{
|
||||||
.region_count = 4,
|
.region_count = 4,
|
||||||
.vertex_paths = grandlecturn_vertex_paths,
|
.vertex_paths = grandlecturn_vertex_paths,
|
||||||
.entry_table_path = "minecraft/grandlecturn/global.dump",
|
.entry_table_path = "data/minecraft/grandlecturn/global.dump",
|
||||||
.lights_path = "minecraft/grandlecturn/global.lights.vtx",
|
.lights_path = "data/minecraft/grandlecturn/global.lights.vtx",
|
||||||
.hash_func = grandlecturn_hash,
|
.hash_func = grandlecturn_hash,
|
||||||
},
|
},
|
||||||
//[world_id::MIDNIGHTMEADOW] =
|
//[world_id::MIDNIGHTMEADOW] =
|
||||||
{
|
{
|
||||||
.region_count = 4,
|
.region_count = 4,
|
||||||
.vertex_paths = midnightmeadow_vertex_paths,
|
.vertex_paths = midnightmeadow_vertex_paths,
|
||||||
.entry_table_path = "minecraft/midnightmeadow/global.dump",
|
.entry_table_path = "data/minecraft/midnightmeadow/global.dump",
|
||||||
.lights_path = "minecraft/midnightmeadow/global.lights.vtx",
|
.lights_path = "data/minecraft/midnightmeadow/global.lights.vtx",
|
||||||
.hash_func = midnightmeadow_hash,
|
.hash_func = midnightmeadow_hash,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user