floodfill add buffer qualifiers, use image sampler

This commit is contained in:
NULL511 2024-05-04 16:33:11 -04:00
parent 94ad32bd7f
commit 50f0aacc5d
10 changed files with 40 additions and 13 deletions

View File

@ -35,6 +35,11 @@ uniform sampler2D texture;
uniform sampler2D noisetex; uniform sampler2D noisetex;
uniform sampler2D colortex4; uniform sampler2D colortex4;
#ifdef IS_LPV_ENABLED
uniform sampler3D texLpv1;
uniform sampler3D texLpv2;
#endif
uniform mat4 gbufferProjectionInverse; uniform mat4 gbufferProjectionInverse;
uniform mat4 gbufferModelViewInverse; uniform mat4 gbufferModelViewInverse;

View File

@ -50,6 +50,11 @@ uniform sampler2D texture;
uniform sampler2D specular; uniform sampler2D specular;
uniform sampler2D normals; uniform sampler2D normals;
#ifdef IS_LPV_ENABLED
uniform sampler3D texLpv1;
uniform sampler3D texLpv2;
#endif
varying vec4 tangent; varying vec4 tangent;
varying vec4 normalMat; varying vec4 normalMat;
varying vec3 binormal; varying vec3 binormal;

View File

@ -86,6 +86,10 @@ uniform sampler2D colortex13;
uniform sampler2D colortex14; uniform sampler2D colortex14;
uniform sampler2D colortex15; // flat normals(rgb), vanillaAO(alpha) uniform sampler2D colortex15; // flat normals(rgb), vanillaAO(alpha)
#ifdef IS_LPV_ENABLED
uniform sampler3D texLpv1;
uniform sampler3D texLpv2;
#endif
uniform mat4 shadowModelView; uniform mat4 shadowModelView;

View File

@ -1,3 +1,5 @@
#define RENDER_SHADOWCOMP
layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in;
#if LPV_SIZE == 8 #if LPV_SIZE == 8
@ -27,6 +29,7 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in;
#include "/lib/blocks.glsl" #include "/lib/blocks.glsl"
#include "/lib/lpv_common.glsl" #include "/lib/lpv_common.glsl"
#include "/lib/lpv_blocks.glsl" #include "/lib/lpv_blocks.glsl"
#include "/lib/lpv_buffer.glsl"
#include "/lib/voxel_common.glsl" #include "/lib/voxel_common.glsl"
int sumOf(ivec3 vec) {return vec.x + vec.y + vec.z;} int sumOf(ivec3 vec) {return vec.x + vec.y + vec.z;}

View File

@ -0,0 +1,7 @@
#ifdef RENDER_SHADOWCOMP
layout(rgba8) uniform restrict image3D imgLpv1;
layout(rgba8) uniform restrict image3D imgLpv2;
#else
layout(rgba8) uniform readonly image3D imgLpv1;
layout(rgba8) uniform readonly image3D imgLpv2;
#endif

View File

@ -1,6 +1,3 @@
layout(rgba8) uniform image3D imgLpv1;
layout(rgba8) uniform image3D imgLpv2;
// How far light propagates (block, sky) // How far light propagates (block, sky)
const vec2 LpvBlockSkyRange = vec2(15.0, 24.0); const vec2 LpvBlockSkyRange = vec2(15.0, 24.0);

View File

@ -7,8 +7,8 @@ const float LpvBlockBrightness = 2.0;
vec4 SampleLpvNearest(const in ivec3 lpvPos) { vec4 SampleLpvNearest(const in ivec3 lpvPos) {
vec4 lpvSample = (frameCounter % 2) == 0 vec4 lpvSample = (frameCounter % 2) == 0
? imageLoad(imgLpv1, lpvPos) ? texelFetch(texLpv1, lpvPos, 0)
: imageLoad(imgLpv2, lpvPos); : texelFetch(texLpv2, lpvPos, 0);
lpvSample.b = pow(lpvSample.b, LpvBlockPower) * LpvBlockSkyRange.x; lpvSample.b = pow(lpvSample.b, LpvBlockPower) * LpvBlockSkyRange.x;
lpvSample.rgb = HsvToRgb(lpvSample.rgb); lpvSample.rgb = HsvToRgb(lpvSample.rgb);

View File

@ -1,4 +1,8 @@
layout(r16ui) uniform uimage3D imgVoxelMask; #ifdef RENDER_SHADOW
layout(r16ui) uniform uimage3D imgVoxelMask;
#else
layout(r16ui) uniform readonly uimage3D imgVoxelMask;
#endif
const uint VoxelSize = uint(exp2(LPV_SIZE)); const uint VoxelSize = uint(exp2(LPV_SIZE));
const uvec3 VoxelSize3 = uvec3(VoxelSize); const uvec3 VoxelSize3 = uvec3(VoxelSize);

View File

@ -627,16 +627,16 @@ uniform.float.shadowMaxProj = 150.0/abs(sunPosY)
#if LPV_SIZE == 8 #if LPV_SIZE == 8
image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 256 256 256 image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 256 256 256
image.imgLpv1 = none RGB RGBA8 BYTE false false 256 256 256 image.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 256 256 256
image.imgLpv2 = none RGB RGBA8 BYTE false false 256 256 256 image.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 256 256 256
#elif LPV_SIZE == 7 #elif LPV_SIZE == 7
image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 128 128 128 image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 128 128 128
image.imgLpv1 = none RGB RGBA8 BYTE false false 128 128 128 image.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 128 128 128
image.imgLpv2 = none RGB RGBA8 BYTE false false 128 128 128 image.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 128 128 128
#elif LPV_SIZE == 6 #elif LPV_SIZE == 6
image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 64 64 64 image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 64 64 64
image.imgLpv1 = none RGB RGBA8 BYTE false false 64 64 64 image.imgLpv1 = texLpv1 RGB RGBA8 BYTE false false 64 64 64
image.imgLpv2 = none RGB RGBA8 BYTE false false 64 64 64 image.imgLpv2 = texLpv2 RGB RGBA8 BYTE false false 64 64 64
#endif #endif
#else #else
program.world1/setup.enabled = false program.world1/setup.enabled = false

View File

@ -4,6 +4,7 @@
#extension GL_EXT_shader_image_load_store: enable #extension GL_EXT_shader_image_load_store: enable
#endif #endif
#define RENDER_SHADOW
/* /*
@ -221,6 +222,7 @@ void main() {
break; break;
// TODO: blaze, magma_cube // TODO: blaze, magma_cube
}
} }
if (voxelId > 0u) if (voxelId > 0u)