mirror of
https://github.com/X0nk/Bliss-Shader.git
synced 2024-12-23 01:59:39 +08:00
add new shadow sample shape to translucents rendering
This commit is contained in:
parent
749b109b44
commit
a74595afb6
@ -91,7 +91,7 @@ void main() {
|
|||||||
|
|
||||||
|
|
||||||
#if defined Seasons && defined OVERWORLD_SHADER
|
#if defined Seasons && defined OVERWORLD_SHADER
|
||||||
YearCycleColor(gcolor.rgb, gl_Color.rgb, dhMaterialId == DH_BLOCK_LEAVES, dh_material_id == DH_BLOCK_GRASS);
|
YearCycleColor(gcolor.rgb, gl_Color.rgb, dhMaterialId == DH_BLOCK_LEAVES, dhMaterialId == DH_BLOCK_GRASS);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if DOF_QUALITY == 5
|
#if DOF_QUALITY == 5
|
||||||
|
@ -207,6 +207,28 @@ vec2 tapLocation_simple(
|
|||||||
return vec2(cos_v, sin_v) * sqrt(alpha);
|
return vec2(cos_v, sin_v) * sqrt(alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vec2 CleanSample(
|
||||||
|
int samples, float totalSamples, float noise
|
||||||
|
){
|
||||||
|
|
||||||
|
// this will be used to make 1 full rotation of the spiral. the mulitplication is so it does nearly a single rotation, instead of going past where it started
|
||||||
|
float variance = noise * 0.897;
|
||||||
|
|
||||||
|
// for every sample input, it will have variance applied to it.
|
||||||
|
float variedSamples = float(samples) + variance;
|
||||||
|
|
||||||
|
// for every sample, the sample position must change its distance from the origin.
|
||||||
|
// otherwise, you will just have a circle.
|
||||||
|
float spiralShape = pow(variedSamples / (totalSamples + variance),0.5);
|
||||||
|
|
||||||
|
float shape = 2.26; // this is very important. 2.26 is very specific
|
||||||
|
float theta = variedSamples * (PI * shape);
|
||||||
|
|
||||||
|
float x = cos(theta) * spiralShape;
|
||||||
|
float y = sin(theta) * spiralShape;
|
||||||
|
|
||||||
|
return vec2(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
vec3 viewToWorld(vec3 viewPos) {
|
vec3 viewToWorld(vec3 viewPos) {
|
||||||
vec4 pos;
|
vec4 pos;
|
||||||
@ -370,7 +392,8 @@ float ComputeShadowMap(inout vec3 directLightColor, vec3 playerPos, float maxDis
|
|||||||
float rdMul = 14.0*distortFactor*d0*k/shadowMapResolution;
|
float rdMul = 14.0*distortFactor*d0*k/shadowMapResolution;
|
||||||
|
|
||||||
for(int i = 0; i < samples; i++){
|
for(int i = 0; i < samples; i++){
|
||||||
vec2 offsetS = tapLocation_simple(i, 7, 9, noise) *0.5;
|
// vec2 offsetS = tapLocation_simple(i, 7, 9, noise) * 0.5;
|
||||||
|
vec2 offsetS = CleanSample(i, samples - 1, noise) * 0.3;
|
||||||
projectedShadowPosition.xy += rdMul*offsetS;
|
projectedShadowPosition.xy += rdMul*offsetS;
|
||||||
#else
|
#else
|
||||||
int samples = 1;
|
int samples = 1;
|
||||||
|
@ -505,8 +505,8 @@ void main() {
|
|||||||
|
|
||||||
for(int i = 0; i < VPS_Search_Samples; i++){
|
for(int i = 0; i < VPS_Search_Samples; i++){
|
||||||
|
|
||||||
vec2 offsetS = SpiralSample(i, 7, 8, noise) * 0.5;
|
// vec2 offsetS = SpiralSample(i, 7, 8, noise) * 0.5;
|
||||||
// vec2 offsetS = CleanSample(i, VPS_Search_Samples - 1, noise) * 0.5;
|
vec2 offsetS = CleanSample(i, VPS_Search_Samples - 1, noise) * 0.5;
|
||||||
|
|
||||||
float weight = 3.0 + (i+noise) *rdMul/SHADOW_FILTER_SAMPLE_COUNT*shadowMapResolution*distortFactor/2.7;
|
float weight = 3.0 + (i+noise) *rdMul/SHADOW_FILTER_SAMPLE_COUNT*shadowMapResolution*distortFactor/2.7;
|
||||||
|
|
||||||
|
@ -67,14 +67,14 @@
|
|||||||
vec3 SpringToSummer = mix(WinterToSpring, SummerCol, SpringTime);
|
vec3 SpringToSummer = mix(WinterToSpring, SummerCol, SpringTime);
|
||||||
|
|
||||||
// make it so that you only have access to parts of the texture that use the tint index
|
// make it so that you only have access to parts of the texture that use the tint index
|
||||||
bool IsTintIndex = floor(dot(glcolor,vec3(0.5))) < 1.0;
|
#ifdef DH_SEASONS
|
||||||
|
bool IsTintIndex = isPlants || isLeaves;
|
||||||
|
#else
|
||||||
|
bool IsTintIndex = floor(dot(glcolor,vec3(0.5))) < 1.0;
|
||||||
|
#endif
|
||||||
|
|
||||||
// multiply final color by the final lerped color, because it contains all the other colors.
|
// multiply final color by the final lerped color, because it contains all the other colors.
|
||||||
#ifdef DH_SEASONS
|
if(IsTintIndex) FinalColor = SpringToSummer;
|
||||||
if(isPlants || isLeaves) FinalColor = SpringToSummer;
|
|
||||||
#else
|
|
||||||
if(IsTintIndex) FinalColor = SpringToSummer;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// #ifdef Snowy_Winter
|
// #ifdef Snowy_Winter
|
||||||
// // this is to make snow only exist in winter
|
// // this is to make snow only exist in winter
|
||||||
|
Loading…
Reference in New Issue
Block a user