#version 120 #extension GL_ARB_explicit_attrib_location: enable #extension GL_ARB_shader_image_load_store: enable #include "/lib/settings.glsl" #define RENDER_SHADOW /* !! DO NOT REMOVE !! This code is from Chocapic13' shaders Read the terms of modification and sharing before changing something below please ! !! DO NOT REMOVE !! */ #ifdef IS_LPV_ENABLED attribute vec4 mc_Entity; attribute vec3 at_midBlock; attribute vec3 vaPosition; uniform int renderStage; uniform vec3 chunkOffset; uniform vec3 cameraPosition; uniform int currentRenderedItemId; uniform int blockEntityId; uniform int entityId; #include "/lib/blocks.glsl" #include "/lib/entities.glsl" #include "/lib/voxel_common.glsl" #include "/lib/voxel_write.glsl" #endif void main() { #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store if ( 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 ) { vec3 playerpos = vaPosition + chunkOffset + gl_Vertex.xyz; vec3 originPos = playerpos + at_midBlock/64.0; uint voxelId = uint(mc_Entity.x + 0.5); if (voxelId == 0u) voxelId = 1u; SetVoxelBlock(originPos, voxelId); } // #ifdef LPV_ENTITY_LIGHTS // if ( // (currentRenderedItemId > 0 || entityId > 0) && // (renderStage == MC_RENDER_STAGE_BLOCK_ENTITIES || renderStage == MC_RENDER_STAGE_ENTITIES) // ) { // uint voxelId = 0u; // if (currentRenderedItemId > 0) { // if (entityId == ENTITY_PLAYER) { // // TODO: remove once hand-light is added // if (currentRenderedItemId < 1000) // voxelId = uint(currentRenderedItemId); // } // else if (entityId != ENTITY_ITEM_FRAME) // voxelId = uint(currentRenderedItemId); // } // else { // switch (entityId) { // case ENTITY_SPECTRAL_ARROW: // voxelId = uint(BLOCK_TORCH); // break; // // TODO: blaze, magma_cube // } // } // if (voxelId > 0u) // SetVoxelBlock(playerpos, voxelId); // } // #endif #endif gl_Position = vec4(-1.0); }