mirror of
https://github.com/X0nk/Bliss-Shader.git
synced 2025-06-21 00:07:50 +08:00
floodfill add buffer qualifiers, use image sampler
This commit is contained in:
parent
94ad32bd7f
commit
50f0aacc5d
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;}
|
||||||
|
7
shaders/lib/lpv_buffer.glsl
Normal file
7
shaders/lib/lpv_buffer.glsl
Normal 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
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -222,6 +223,7 @@ void main() {
|
|||||||
|
|
||||||
// TODO: blaze, magma_cube
|
// TODO: blaze, magma_cube
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (voxelId > 0u)
|
if (voxelId > 0u)
|
||||||
SetVoxelBlock(playerpos, voxelId);
|
SetVoxelBlock(playerpos, voxelId);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user