make handheld lights work on particles and translucents. make lit particle brightness work again. exclude hand from bloom. extend bloom mulitplier slider.

This commit is contained in:
Xonk 2023-10-30 16:07:38 -04:00
parent 6fdc95dff4
commit 8f5111d82d
15 changed files with 135 additions and 47 deletions

View File

@ -33,6 +33,7 @@ uniform vec2 texelSize;
uniform ivec2 eyeBrightnessSmooth; uniform ivec2 eyeBrightnessSmooth;
uniform float rainStrength; uniform float rainStrength;
flat varying float HELD_ITEM_BRIGHTNESS;
#ifndef OVERWORLD_SHADER #ifndef OVERWORLD_SHADER
uniform float nightVision; uniform float nightVision;
@ -99,6 +100,13 @@ void main() {
#ifndef OVERWORLD_SHADER #ifndef OVERWORLD_SHADER
lightmap.y = 1.0; lightmap.y = 1.0;
#endif #endif
#ifdef Hand_Held_lights
lightmap.x = max(lightmap.x, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length(viewPos)/10,0.0),1.5),0.0,1.0));
#endif
#ifdef WEATHER #ifdef WEATHER
gl_FragData[1].a = TEXTURE.a; // for bloomy rain and stuff gl_FragData[1].a = TEXTURE.a; // for bloomy rain and stuff
#endif #endif
@ -117,9 +125,8 @@ void main() {
vec3 Indirect_lighting = vec3(0.0); vec3 Indirect_lighting = vec3(0.0);
vec3 Torch_Color = vec3(TORCH_R,TORCH_G,TORCH_B); vec3 Torch_Color = vec3(TORCH_R,TORCH_G,TORCH_B);
#ifdef LIT
Torch_Color *= LIT_PARTICLE_BRIGHTNESS; if(lightmap.x >= 0.9) Torch_Color *= LIT_PARTICLE_BRIGHTNESS;
#endif
#ifdef OVERWORLD_SHADER #ifdef OVERWORLD_SHADER
float Shadows = 1.0; float Shadows = 1.0;
@ -161,7 +168,7 @@ void main() {
vec3 AmbientLightColor = vec3(1.0); vec3 AmbientLightColor = vec3(1.0);
#endif #endif
Indirect_lighting = DoAmbientLightColor(AmbientLightColor, vec3(TORCH_R,TORCH_G,TORCH_B), clamp(lightmap.xy,0,1)); Indirect_lighting = DoAmbientLightColor(AmbientLightColor, Torch_Color, clamp(lightmap.xy,0,1));
#ifdef LINES #ifdef LINES
gl_FragData[0].rgb = (Indirect_lighting + Direct_lighting) * toLinear(color.rgb); gl_FragData[0].rgb = (Indirect_lighting + Direct_lighting) * toLinear(color.rgb);

View File

@ -29,6 +29,10 @@ uniform mat4 gbufferModelViewInverse;
uniform mat4 gbufferModelView; uniform mat4 gbufferModelView;
uniform ivec2 eyeBrightnessSmooth; uniform ivec2 eyeBrightnessSmooth;
uniform int heldItemId;
uniform int heldItemId2;
flat varying float HELD_ITEM_BRIGHTNESS;
const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.),
vec2(-1.,3.)/8., vec2(-1.,3.)/8.,
vec2(5.0,1.)/8., vec2(5.0,1.)/8.,
@ -55,6 +59,14 @@ void main() {
vec2 lmcoord = gl_MultiTexCoord1.xy / 255.0; // is this even correct? lol' vec2 lmcoord = gl_MultiTexCoord1.xy / 255.0; // is this even correct? lol'
lmtexcoord.zw = lmcoord; lmtexcoord.zw = lmcoord;
HELD_ITEM_BRIGHTNESS = 0.0;
#ifdef Hand_Held_lights
if(heldItemId == 100 || heldItemId2 == 100) HELD_ITEM_BRIGHTNESS = 0.9;
#endif
#ifdef WEATHER #ifdef WEATHER
vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;

View File

@ -311,7 +311,13 @@ void main() {
float torchlightmap = lmtexcoord.z; float torchlightmap = lmtexcoord.z;
#ifdef Hand_Held_lights #ifdef Hand_Held_lights
if(HELD_ITEM_BRIGHTNESS > 0.0) torchlightmap = max(torchlightmap, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length(fragpos)/10,0.0),1.5),0.0,1.0)); if(HELD_ITEM_BRIGHTNESS > 0.0) torchlightmap = max(torchlightmap, HELD_ITEM_BRIGHTNESS * clamp( pow(max(1.0-length(fragpos)/10,0.0),1.5),0.0,1.0));
#ifdef HAND
torchlightmap = 0.7;
#endif
#endif #endif
float lightmap = clamp( (lmtexcoord.w-0.8) * 10.0,0.,1.); float lightmap = clamp( (lmtexcoord.w-0.8) * 10.0,0.,1.);
@ -435,7 +441,7 @@ void main() {
else Albedo.a = 0.0; else Albedo.a = 0.0;
#endif #endif
#if defined HAND #ifdef HAND
if (Albedo.a > 0.1) Albedo.a = 0.75; if (Albedo.a > 0.1) Albedo.a = 0.75;
else Albedo.a = 0.0; else Albedo.a = 0.0;
#endif #endif

View File

@ -15,6 +15,7 @@ varying vec4 color;
flat varying vec4 lightCol; flat varying vec4 lightCol;
#endif #endif
flat varying float HELD_ITEM_BRIGHTNESS;
const bool colortex4MipmapEnabled = true; const bool colortex4MipmapEnabled = true;
uniform sampler2D noisetex; uniform sampler2D noisetex;
@ -372,6 +373,10 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 )
#ifndef OVERWORLD_SHADER #ifndef OVERWORLD_SHADER
lightmap.y = 1.0; lightmap.y = 1.0;
#endif #endif
#ifdef Hand_Held_lights
lightmap.x = max(lightmap.x, HELD_ITEM_BRIGHTNESS*clamp( pow(max(1.0-length(viewPos)/10,0.0),1.5),0.0,1.0));
#endif
vec3 Indirect_lighting = vec3(0.0); vec3 Indirect_lighting = vec3(0.0);
vec3 Direct_lighting = vec3(0.0); vec3 Direct_lighting = vec3(0.0);

View File

@ -49,6 +49,10 @@ uniform float viewWidth;
uniform int hideGUI; uniform int hideGUI;
uniform float screenBrightness; uniform float screenBrightness;
uniform int heldItemId;
uniform int heldItemId2;
flat varying float HELD_ITEM_BRIGHTNESS;
uniform vec2 texelSize; uniform vec2 texelSize;
uniform int framemod8; uniform int framemod8;
@ -85,7 +89,12 @@ void main() {
vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;
gl_Position = toClipSpace3(position); gl_Position = toClipSpace3(position);
HELD_ITEM_BRIGHTNESS = 0.0;
#ifdef Hand_Held_lights
if(heldItemId == 100 || heldItemId2 == 100) HELD_ITEM_BRIGHTNESS = 0.9;
#endif
float mat = 0.0; float mat = 0.0;
if(mc_Entity.x == 8.0) { if(mc_Entity.x == 8.0) {

View File

@ -38,7 +38,13 @@ uniform sampler2D colortex4;
flat varying float exposure; flat varying float exposure;
void main() { void main() {
color = gl_Color;
#ifdef ENCHANT_GLINT
texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st;
#else
texcoord = (gl_MultiTexCoord0).xy;
#endif
#if defined ENCHANT_GLINT || defined SPIDER_EYES #if defined ENCHANT_GLINT || defined SPIDER_EYES
exposure = texelFetch2D(colortex4,ivec2(10,37),0).r; exposure = texelFetch2D(colortex4,ivec2(10,37),0).r;
@ -49,19 +55,12 @@ void main() {
gl_Position = ftransform(); gl_Position = ftransform();
#endif #endif
texcoord = (gl_MultiTexCoord0).xy;
#ifdef ENCHANT_GLINT
texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st;
// float exposure = texelFetch2D(colortex4, ivec2(10,37),0).r;
#endif
color = gl_Color;
#ifdef BEACON_BEAM #ifdef BEACON_BEAM
if(gl_Color.a < 1.0) gl_Position = vec4(10,10,10,0); if(gl_Color.a < 1.0) gl_Position = vec4(10,10,10,0);
#endif #endif
#ifdef TAA_UPSCALING #ifdef TAA_UPSCALING
gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w;
#endif #endif

View File

@ -37,7 +37,7 @@ const bool colortex5MipmapEnabled = true;
// #define LIGHTSOURCE_REFLECTION // #define LIGHTSOURCE_REFLECTION
#endif #endif
uniform int hideGUI;
uniform sampler2D noisetex; //noise uniform sampler2D noisetex; //noise
uniform sampler2D depthtex0; //depth uniform sampler2D depthtex0; //depth
uniform sampler2D depthtex1; //depth uniform sampler2D depthtex1; //depth
@ -420,18 +420,14 @@ void SSRT_Shadows(vec3 viewPos, vec3 lightDir, float noise, bool isSSS, bool ins
vec3 rayDir = direction * (isSSS ? 1.5 : 3.0) * vec3(RENDER_SCALE,1.0); vec3 rayDir = direction * (isSSS ? 1.5 : 3.0) * vec3(RENDER_SCALE,1.0);
vec3 screenPos = clipPosition*vec3(RENDER_SCALE,1.0) + rayDir*noise; vec3 screenPos = clipPosition * vec3(RENDER_SCALE,1.0) + rayDir*noise;
if(isSSS)screenPos -= rayDir*0.9;
if(isSSS) screenPos -= rayDir*0.9;
float shadowgradient = 0;
for (int i = 0; i < int(steps); i++) { for (int i = 0; i < int(steps); i++) {
screenPos += rayDir; screenPos += rayDir;
float shadowGradient = i/steps; float samplePos = texture2D(depthtex2, screenPos.xy).x;
float samplePos = texture2D(depthtex1, screenPos.xy).x;
if(samplePos <= screenPos.z) { if(samplePos <= screenPos.z) {
vec2 linearZ = vec2(linZ(screenPos.z), linZ(samplePos)); vec2 linearZ = vec2(linZ(screenPos.z), linZ(samplePos));
float calcthreshold = abs(linearZ.x - linearZ.y) / linearZ.x; float calcthreshold = abs(linearZ.x - linearZ.y) / linearZ.x;
@ -439,10 +435,9 @@ void SSRT_Shadows(vec3 viewPos, vec3 lightDir, float noise, bool isSSS, bool ins
bool depthThreshold1 = calcthreshold < 0.015; bool depthThreshold1 = calcthreshold < 0.015;
bool depthThreshold2 = calcthreshold < 0.05; bool depthThreshold2 = calcthreshold < 0.05;
// if (depthThreshold1) Shadow = inshadowmap ? shadowGradient : 0.0;
if (depthThreshold1) Shadow = 0.0; if (depthThreshold1) Shadow = 0.0;
if (depthThreshold2) SSS = shadowGradient; if (depthThreshold2) SSS = i/steps;
} }
} }
@ -509,8 +504,11 @@ vec3 SubsurfaceScattering_sky(vec3 albedo, float Scattering, float Density){
#include "/lib/indirect_lighting_effects.glsl" #include "/lib/indirect_lighting_effects.glsl"
#include "/lib/PhotonGTAO.glsl" #include "/lib/PhotonGTAO.glsl"
void main() { void main() {
vec3 DEBUG =vec3( 1.0);
////// --------------- SETUP STUFF --------------- ////// ////// --------------- SETUP STUFF --------------- //////
vec2 texcoord = gl_FragCoord.xy*texelSize; vec2 texcoord = gl_FragCoord.xy*texelSize;
@ -527,6 +525,8 @@ void main() {
vec3 feetPlayerPos = mat3(gbufferModelViewInverse) * viewPos; vec3 feetPlayerPos = mat3(gbufferModelViewInverse) * viewPos;
vec3 feetPlayerPos_normalized = normVec(feetPlayerPos); vec3 feetPlayerPos_normalized = normVec(feetPlayerPos);
////// --------------- UNPACK OPAQUE GBUFFERS --------------- ////// ////// --------------- UNPACK OPAQUE GBUFFERS --------------- //////
vec4 data = texture2D(colortex1,texcoord); vec4 data = texture2D(colortex1,texcoord);
@ -570,7 +570,7 @@ void main() {
bool entities = abs(dataUnpacked1.w-0.45) < 0.01; bool entities = abs(dataUnpacked1.w-0.45) < 0.01;
// bool isBoss = abs(dataUnpacked1.w-0.60) < 0.01; // bool isBoss = abs(dataUnpacked1.w-0.60) < 0.01;
bool isGrass = abs(dataUnpacked1.w-0.60) < 0.01; bool isGrass = abs(dataUnpacked1.w-0.60) < 0.01;
bool hand = abs(dataUnpacked1.w-0.75) < 0.01; bool hand = abs(dataUnpacked1.w-0.75) < 0.01 && z0 < 1.0;
// bool blocklights = abs(dataUnpacked1.w-0.8) <0.01; // bool blocklights = abs(dataUnpacked1.w-0.8) <0.01;
@ -674,8 +674,10 @@ void main() {
#endif #endif
vec3 feetPlayerPos_shadow = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; vec3 feetPlayerPos_shadow = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz;
if(!hand) GriAndEminShadowFix(feetPlayerPos_shadow, viewToWorld(FlatNormals), vanilla_AO, lightmap.y, entities); if(!entities){
if(!hand) GriAndEminShadowFix(feetPlayerPos_shadow, viewToWorld(FlatNormals), vanilla_AO, lightmap.y, entities);
}
// mat4 Custom_ViewMatrix = BuildShadowViewMatrix(LightDir); // mat4 Custom_ViewMatrix = BuildShadowViewMatrix(LightDir);
// vec3 projectedShadowPosition = mat3(Custom_ViewMatrix) * feetPlayerPos_shadow + Custom_ViewMatrix[3].xyz; // vec3 projectedShadowPosition = mat3(Custom_ViewMatrix) * feetPlayerPos_shadow + Custom_ViewMatrix[3].xyz;
@ -697,13 +699,15 @@ void main() {
if (shadowNDOTL >= -0.001){ if (shadowNDOTL >= -0.001){
Shadows = 0.0; Shadows = 0.0;
int samples = SHADOW_FILTER_SAMPLE_COUNT; int samples = SHADOW_FILTER_SAMPLE_COUNT;
float smallbias = 0; float smallbias = 0.0;
if(hand){ if(hand){
samples = 1; samples = 1;
smallbias = -0.0005;
noise = 0.5; noise = 0.5;
smallbias = -0.0004;
} }
if(entities) smallbias = -0.0001;
projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5); projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5);
@ -768,7 +772,10 @@ void main() {
Shadows = min(Shadows, SS_shadow); Shadows = min(Shadows, SS_shadow);
if (!inShadowmapBounds) ShadowBlockerDepth = max(ShadowBlockerDepth, SS_shadowSSS); if (!inShadowmapBounds) ShadowBlockerDepth = max(ShadowBlockerDepth, clamp(SS_shadowSSS,0.0,1.0));
// DEBUG = 1.0-SS_shadowSSS;
#else #else
if (!inShadowmapBounds) Direct_SSS = vec3(0.0); if (!inShadowmapBounds) Direct_SSS = vec3(0.0);
@ -782,7 +789,7 @@ void main() {
if (!inShadowmapBounds){ if (!inShadowmapBounds){
Direct_SSS *= lightmapAsShadows; Direct_SSS *= lightmapAsShadows;
Direct_SSS *= 1.0-NdotL; // Direct_SSS *= 1.0-NdotL;
} }
#endif #endif
@ -1020,8 +1027,7 @@ void main() {
waterVolumetrics_notoverworld(gl_FragData[0].rgb, viewPos0, viewPos, estimatedDepth , estimatedDepth, Vdiff, noise_2, totEpsilon, scatterCoef, ambientColVol); waterVolumetrics_notoverworld(gl_FragData[0].rgb, viewPos0, viewPos, estimatedDepth , estimatedDepth, Vdiff, noise_2, totEpsilon, scatterCoef, ambientColVol);
} }
#endif #endif
// gl_FragData[0].rgb = vec3(hand);
/* DRAWBUFFERS:3 */ /* DRAWBUFFERS:3 */
} }

View File

@ -264,7 +264,7 @@ vec4 TAA_hq(){
vec4 albedoPrev = texture2D(colortex5, previousPosition.xy); vec4 albedoPrev = texture2D(colortex5, previousPosition.xy);
vec3 supersampled = albedoPrev.rgb * albedoPrev.a + albedoCurrent0; vec3 supersampled = albedoPrev.rgb * albedoPrev.a + albedoCurrent0;
if (length(velocity) > 1e-6 || hideGUI < 1) return vec4(albedoCurrent0,1.0); if ( hideGUI < 1) return vec4(albedoCurrent0,1.0);
return vec4(supersampled/(albedoPrev.a+1.0), albedoPrev.a+1.0); return vec4(supersampled/(albedoPrev.a+1.0), albedoPrev.a+1.0);
#endif #endif
} }

View File

@ -1,7 +1,24 @@
uniform sampler2D depthtex1;
uniform sampler2D colortex1;
uniform sampler2D colortex5; uniform sampler2D colortex5;
uniform vec2 texelSize; uniform vec2 texelSize;
uniform float viewWidth; uniform float viewWidth;
uniform float viewHeight; uniform float viewHeight;
vec3 decode (vec2 encn){
vec3 n = vec3(0.0);
encn = encn * 2.0 - 1.0;
n.xy = abs(encn);
n.z = 1.0 - n.x - n.y;
n.xy = n.z <= 0.0 ? (1.0 - n.yx) * sign(encn) : encn;
return clamp(normalize(n.xyz),-1.0,1.0);
}
vec2 decodeVec2(float a){
const vec2 constant1 = 65535. / vec2( 256., 65536.);
const float constant2 = 256. / 255.;
return fract( a * constant1 ) * constant2 ;
}
//////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN//////////////////////////////
//////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN//////////////////////////////
//////////////////////////////VOID MAIN////////////////////////////// //////////////////////////////VOID MAIN//////////////////////////////
@ -15,6 +32,11 @@ void main() {
vec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.); vec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.);
vec2 quarterResTC = gl_FragCoord.xy*2.*resScale*texelSize; vec2 quarterResTC = gl_FragCoord.xy*2.*resScale*texelSize;
vec4 data = texture2D(colortex1,quarterResTC);
vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w));
float depth = texture2D(depthtex1,quarterResTC).x;
bool hand = abs(dataUnpacked1.w-0.75) < 0.01 && depth < 1.0;
//0.5 //0.5
gl_FragData[0] = texture2D(colortex5,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; gl_FragData[0] = texture2D(colortex5,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5;
gl_FragData[0] += texture2D(colortex5,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; gl_FragData[0] += texture2D(colortex5,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5;
@ -37,7 +59,7 @@ vec2 quarterResTC = gl_FragCoord.xy*2.*resScale*texelSize;
gl_FragData[0] += texture2D(colortex5,quarterResTC)*0.125; gl_FragData[0] += texture2D(colortex5,quarterResTC)*0.125;
gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.);
if (quarterResTC.x > 1.0 - 3.5*texelSize.x || quarterResTC.y > 1.0 -3.5*texelSize.y || quarterResTC.x < 3.5*texelSize.x || quarterResTC.y < 3.5*texelSize.y) gl_FragData[0].rgb = vec3(0.0); if (hand || quarterResTC.x > 1.0 - 3.5*texelSize.x || quarterResTC.y > 1.0 -3.5*texelSize.y || quarterResTC.x < 3.5*texelSize.x || quarterResTC.y < 3.5*texelSize.y) gl_FragData[0].rgb = vec3(0.0);
} }

View File

@ -2,6 +2,7 @@
uniform sampler2D colortex4; uniform sampler2D colortex4;
uniform sampler2D depthtex1; uniform sampler2D depthtex1;
uniform sampler2D depthtex2;
uniform float near; uniform float near;
uniform float far; uniform float far;

View File

@ -169,6 +169,13 @@ void main() {
// uniform sampler2D shadowcolor0; // uniform sampler2D shadowcolor0;
// uniform sampler2D shadowtex0; // uniform sampler2D shadowtex0;
// uniform sampler2D shadowtex1; // uniform sampler2D shadowtex1;
// vec2 coord = gl_FragCoord.xy;
// int invertChecker = int(mod(coord.x,2)) * int(mod(coord.y,2));
// int checker = int(mod(coord.x*coord.y,2));
// int checker2 = int(mod(coord.x*coord.y+1,2));
// gl_FragColor.rgb = vec3(0.2) * checker * checker2;
// if( hideGUI == 1){ // if( hideGUI == 1){

View File

@ -65,13 +65,20 @@ SOFTWARE.*/
// vec3 RandomPosition = hash31(frameTimeCounter); // vec3 RandomPosition = hash31(frameTimeCounter);
vec3 ManualLightPos = vec3(ORB_X, ORB_Y, ORB_Z); vec3 ManualLightPos = vec3(ORB_X, ORB_Y, ORB_Z);
// int switcher = frameCounter % 2 == 0 ? 0 : 1;
// float OneOrZero = int(mod(gl_FragCoord.x*gl_FragCoord.y + switcher, 2));
void LightSourcePosition(vec3 WorldPos, vec3 CameraPos, inout vec3 Pos1, inout vec3 Pos2){ void LightSourcePosition(vec3 WorldPos, vec3 CameraPos, inout vec3 Pos1, inout vec3 Pos2){
Pos1 = WorldPos - vec3(0,200,0); Pos1 = WorldPos - vec3(0,200,0);
// Pos2 = WorldPos - vec3(-50,100,0);
// Pos1 = mix(Pos1, Pos2, OneOrZero);
vec3 Origin = WorldPos - CameraPos - ManualLightPos; vec3 Origin = WorldPos - CameraPos - ManualLightPos;
float cellSize = 200; float cellSize = 200;
vec3 cellPos = CameraPos ; vec3 cellPos = CameraPos ;
@ -82,6 +89,7 @@ void LightSourcePosition(vec3 WorldPos, vec3 CameraPos, inout vec3 Pos1, inout v
Origin -= (randomPos * 2.0 - 1.0); Origin -= (randomPos * 2.0 - 1.0);
// Pos1 = mix(Pos1, Origin, OneOrZero);
Pos2 = Origin; Pos2 = Origin;
} }
@ -169,8 +177,12 @@ float EndLightMie(vec3 LightPos){
} }
void LightSourceColors(inout vec3 Color1, inout vec3 Color2){ void LightSourceColors(inout vec3 Color1, inout vec3 Color2){
Color1 = vec3(0.7,0.88,1.0); // Color1 = vec3(0.7,0.88,1.0);
Color2 = vec3(ORB_R,ORB_G,ORB_B); // Color2 = vec3(ORB_R,ORB_G,ORB_B);
Color1 = vec3(1.0,0.5,1.0);
Color2 = vec3(0.0,0.5,1.0);
// Color1 = mix(Color1, Color2, OneOrZero);
} }
vec3 LightSourceLighting( vec3 WorldPos, vec3 LightPos, float Dither, float VolumeDensity, vec3 LightColor, float Phase ){ vec3 LightSourceLighting( vec3 WorldPos, vec3 LightPos, float Dither, float VolumeDensity, vec3 LightColor, float Phase ){
@ -178,7 +190,10 @@ vec3 LightSourceLighting( vec3 WorldPos, vec3 LightPos, float Dither, float Volu
float Mie = EndLightMie(LightPos); float Mie = EndLightMie(LightPos);
float Shadow = 0.0; float Shadow = 0.0;
// vec3 shadowSamplePos = WorldPos - LightPos * 0.05;
for (int j=0; j < 3; j++){ for (int j=0; j < 3; j++){
// shadowSamplePos -= LightPos * 0.25 * Dither * min(j,1);
vec3 shadowSamplePos = WorldPos - LightPos * (0.05 + j * (0.25 + Dither*0.15)); vec3 shadowSamplePos = WorldPos - LightPos * (0.05 + j * (0.25 + Dither*0.15));
Shadow += cloudVol(shadowSamplePos); Shadow += cloudVol(shadowSamplePos);
} }
@ -254,6 +269,7 @@ vec4 GetVolumetricFog(
LightSourcePosition(progressW, cameraPosition, LightPos1, LightPos2); LightSourcePosition(progressW, cameraPosition, LightPos1, LightPos2);
float VolumeDensity = max(cloudVol(progressW),0.0); float VolumeDensity = max(cloudVol(progressW),0.0);
// float VolumeDensity = 0.0;
float Density = max(VolumeDensity,0.0); float Density = max(VolumeDensity,0.0);
@ -269,7 +285,7 @@ vec4 GetVolumetricFog(
vec3 Light1 = vec3(0); vec3 Light2 = vec3(0); vec3 Light1 = vec3(0); vec3 Light2 = vec3(0);
// Density += clamp((1.0 - length(LightPos1) / 10.0) * 10 ,0.0,1.0); // THE ORRRRRRRRRRRRRRRRRRRRRRRRRRB Density += clamp((1.0 - length(LightPos1) / 10.0) * 10 ,0.0,1.0); // THE ORRRRRRRRRRRRRRRRRRRRRRRRRRB
Light1 = LightSourceLighting(progressW, LightPos1, dither2, VolumeDensity, LightCol1, Phase1); Light1 = LightSourceLighting(progressW, LightPos1, dither2, VolumeDensity, LightCol1, Phase1);
#if lightsourceCount == 2 #if lightsourceCount == 2

View File

@ -165,7 +165,7 @@ const float sunPathRotation = -35; //[-90 -89 -88 -87 -86 -85 -84 -83 -82 -81 -8
#define RainFog_amount 3 // [0 1 2 3 4 5 6 7 8 9 10 15 20 25] #define RainFog_amount 3 // [0 1 2 3 4 5 6 7 8 9 10 15 20 25]
#define BLOOMY_FOG 1.5 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0] #define BLOOMY_FOG 1.5 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0]
#define BLOOM_STRENGTH 4.0 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0] #define BLOOM_STRENGTH 4.0 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 50.0 75.0 100.0]
#define Cave_fog #define Cave_fog
#define CaveFogFallOff 2.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] #define CaveFogFallOff 2.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ]

View File

@ -261,6 +261,8 @@ vec4 renderClouds(
#ifdef Cumulus #ifdef Cumulus
for(int i=0;i<maxIT_clouds;i++) { for(int i=0;i<maxIT_clouds;i++) {
// IntersecTerrain = length(progress_view - cameraPosition) > lViewPosM; // IntersecTerrain = length(progress_view - cameraPosition) > lViewPosM;

View File

@ -36,16 +36,12 @@ program.composite4.enabled = TAA_UPSCALING
blend.gbuffers_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_hand_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_hand_water = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_textured = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_textured = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_textured_lit = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_textured_lit = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_spidereyes = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_spidereyes = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_basic = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE blend.gbuffers_basic = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_armor_glint = ONE ONE ONE ONE blend.gbuffers_armor_glint = ONE ONE ONE ONE
blend.gbuffers_weather = ONE ONE ONE ONE blend.gbuffers_weather = SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE
blend.gbuffers_skytextured = ONE ONE ONE ONE blend.gbuffers_skytextured = ONE ONE ONE ONE
blend.gbuffers_damagedblock = ONE ONE ONE ONE blend.gbuffers_damagedblock = ONE ONE ONE ONE
@ -61,13 +57,13 @@ blend.composite.colortex12 = off
# Alpha test # Alpha test
alphaTest.shadow = GREATER 0.1 alphaTest.shadow = GREATER 0.1
alphaTest.gbuffers_entities = GREATER 0.1 alphaTest.gbuffers_entities = GREATER 0.1
alphaTest.gbuffers_hand = true
alphaTest.gbuffers_armor_glint=false alphaTest.gbuffers_armor_glint=false
alphaTest.gbuffers_weather=false alphaTest.gbuffers_weather=false
alphaTest.gbuffers_water=false alphaTest.gbuffers_water=false
alphaTest.gbuffers_skybasic=false alphaTest.gbuffers_skybasic=false
alphaTest.gbuffers_skytextured=false alphaTest.gbuffers_skytextured=false
alphaTest.gbuffers_hand=true
sliders = WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS R_UPPER_CURVE R_LOWER_CURVE G_UPPER_CURVE G_LOWER_CURVE B_UPPER_CURVE B_LOWER_CURVE UPPER_CURVE LOWER_CURVE CONTRAST EMISSIVE_TYPE SCALE_FACTOR CompSky_R CompSky_G CompSky_B ambientsss_brightness SSS_TYPE Cloud_Speed Cumulus_height Cumulus_coverage Cumulus_density Alto_coverage Alto_density ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount ambient_temp Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance FinalR FinalG FinalB Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH sliders = WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS R_UPPER_CURVE R_LOWER_CURVE G_UPPER_CURVE G_LOWER_CURVE B_UPPER_CURVE B_LOWER_CURVE UPPER_CURVE LOWER_CURVE CONTRAST EMISSIVE_TYPE SCALE_FACTOR CompSky_R CompSky_G CompSky_B ambientsss_brightness SSS_TYPE Cloud_Speed Cumulus_height Cumulus_coverage Cumulus_density Alto_coverage Alto_density ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Moon_temp Haze_amount RainFog_amount ambient_temp Sun_temp Puddle_Size LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance FinalR FinalG FinalB Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST SSR_STEPS ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal aperture MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Texture_MipMap_Bias DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_RESOLUTION BLOOM_QUALITY VL_RENDER_RESOLUTION RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 Roughness_Threshold Sun_specular_Strength reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH