nether/end floodfill final fix

This commit is contained in:
NULL511 2024-05-05 18:03:00 -04:00
parent beac5d235f
commit 81fb07c371
2 changed files with 62 additions and 56 deletions

View File

@ -18,6 +18,8 @@ Read the terms of modification and sharing before changing something below pleas
attribute vec4 mc_Entity; attribute vec4 mc_Entity;
attribute vec3 at_midBlock; attribute vec3 at_midBlock;
attribute vec3 vaPosition; attribute vec3 vaPosition;
uniform mat4 shadowModelViewInverse;
uniform int renderStage; uniform int renderStage;
uniform vec3 chunkOffset; uniform vec3 chunkOffset;
@ -35,11 +37,13 @@ Read the terms of modification and sharing before changing something below pleas
void main() { void main() {
#if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store
vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;
vec3 playerpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz;
if ( if (
renderStage == MC_RENDER_STAGE_TERRAIN_SOLID || renderStage == MC_RENDER_STAGE_TERRAIN_TRANSLUCENT || renderStage == MC_RENDER_STAGE_TERRAIN_SOLID || renderStage == MC_RENDER_STAGE_TERRAIN_TRANSLUCENT ||
renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT || renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT_MIPPED renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT || renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT_MIPPED
) { ) {
vec3 playerpos = gl_Vertex.xyz;
vec3 originPos = playerpos + at_midBlock/64.0; vec3 originPos = playerpos + at_midBlock/64.0;
uint voxelId = uint(mc_Entity.x + 0.5); uint voxelId = uint(mc_Entity.x + 0.5);
@ -48,36 +52,35 @@ void main() {
SetVoxelBlock(originPos, voxelId); SetVoxelBlock(originPos, voxelId);
} }
// #ifdef LPV_ENTITY_LIGHTS #ifdef LPV_ENTITY_LIGHTS
// if ( if (
// (currentRenderedItemId > 0 || entityId > 0) && (currentRenderedItemId > 0 || entityId > 0) &&
// (renderStage == MC_RENDER_STAGE_BLOCK_ENTITIES || renderStage == MC_RENDER_STAGE_ENTITIES) (renderStage == MC_RENDER_STAGE_BLOCK_ENTITIES || renderStage == MC_RENDER_STAGE_ENTITIES)
// ) { ) {
// uint voxelId = 0u; uint voxelId = 0u;
// if (currentRenderedItemId > 0) { if (currentRenderedItemId > 0) {
// if (entityId == ENTITY_PLAYER) { if (entityId == ENTITY_PLAYER) {
// // TODO: remove once hand-light is added if (currentRenderedItemId < 1000)
// if (currentRenderedItemId < 1000) voxelId = uint(currentRenderedItemId);
// voxelId = uint(currentRenderedItemId); }
// } else if (entityId != ENTITY_ITEM_FRAME)
// else if (entityId != ENTITY_ITEM_FRAME) voxelId = uint(currentRenderedItemId);
// voxelId = uint(currentRenderedItemId); }
// } else {
// else { switch (entityId) {
// switch (entityId) { case ENTITY_SPECTRAL_ARROW:
// case ENTITY_SPECTRAL_ARROW: voxelId = uint(BLOCK_TORCH);
// voxelId = uint(BLOCK_TORCH); break;
// break;
// // TODO: blaze, magma_cube // TODO: blaze, magma_cube
// } }
// } }
// if (voxelId > 0u) if (voxelId > 0u)
// SetVoxelBlock(playerpos, voxelId); SetVoxelBlock(playerpos, voxelId);
// } }
// #endif #endif
#endif #endif
gl_Position = vec4(-1.0); gl_Position = vec4(-1.0);

View File

@ -18,6 +18,8 @@ Read the terms of modification and sharing before changing something below pleas
attribute vec4 mc_Entity; attribute vec4 mc_Entity;
attribute vec3 at_midBlock; attribute vec3 at_midBlock;
attribute vec3 vaPosition; attribute vec3 vaPosition;
uniform mat4 shadowModelViewInverse;
uniform int renderStage; uniform int renderStage;
uniform vec3 chunkOffset; uniform vec3 chunkOffset;
@ -35,11 +37,13 @@ Read the terms of modification and sharing before changing something below pleas
void main() { void main() {
#if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store
vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;
vec3 playerpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz;
if ( if (
renderStage == MC_RENDER_STAGE_TERRAIN_SOLID || renderStage == MC_RENDER_STAGE_TERRAIN_TRANSLUCENT || renderStage == MC_RENDER_STAGE_TERRAIN_SOLID || renderStage == MC_RENDER_STAGE_TERRAIN_TRANSLUCENT ||
renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT || renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT_MIPPED renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT || renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT_MIPPED
) { ) {
vec3 playerpos = vaPosition + chunkOffset + gl_Vertex.xyz;
vec3 originPos = playerpos + at_midBlock/64.0; vec3 originPos = playerpos + at_midBlock/64.0;
uint voxelId = uint(mc_Entity.x + 0.5); uint voxelId = uint(mc_Entity.x + 0.5);
@ -48,36 +52,35 @@ void main() {
SetVoxelBlock(originPos, voxelId); SetVoxelBlock(originPos, voxelId);
} }
// #ifdef LPV_ENTITY_LIGHTS #ifdef LPV_ENTITY_LIGHTS
// if ( if (
// (currentRenderedItemId > 0 || entityId > 0) && (currentRenderedItemId > 0 || entityId > 0) &&
// (renderStage == MC_RENDER_STAGE_BLOCK_ENTITIES || renderStage == MC_RENDER_STAGE_ENTITIES) (renderStage == MC_RENDER_STAGE_BLOCK_ENTITIES || renderStage == MC_RENDER_STAGE_ENTITIES)
// ) { ) {
// uint voxelId = 0u; uint voxelId = 0u;
// if (currentRenderedItemId > 0) { if (currentRenderedItemId > 0) {
// if (entityId == ENTITY_PLAYER) { if (entityId == ENTITY_PLAYER) {
// // TODO: remove once hand-light is added if (currentRenderedItemId < 1000)
// if (currentRenderedItemId < 1000) voxelId = uint(currentRenderedItemId);
// voxelId = uint(currentRenderedItemId); }
// } else if (entityId != ENTITY_ITEM_FRAME)
// else if (entityId != ENTITY_ITEM_FRAME) voxelId = uint(currentRenderedItemId);
// voxelId = uint(currentRenderedItemId); }
// } else {
// else { switch (entityId) {
// switch (entityId) { case ENTITY_SPECTRAL_ARROW:
// case ENTITY_SPECTRAL_ARROW: voxelId = uint(BLOCK_TORCH);
// voxelId = uint(BLOCK_TORCH); break;
// break;
// // TODO: blaze, magma_cube // TODO: blaze, magma_cube
// } }
// } }
// if (voxelId > 0u) if (voxelId > 0u)
// SetVoxelBlock(playerpos, voxelId); SetVoxelBlock(playerpos, voxelId);
// } }
// #endif #endif
#endif #endif
gl_Position = vec4(-1.0); gl_Position = vec4(-1.0);