Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 269f2c30fd | |||
| b674f49600 |
@@ -43,7 +43,7 @@ public final class ModInfo
|
||||
public static final String NAME = "DistantHorizons";
|
||||
/** Human-readable version of NAME */
|
||||
public static final String READABLE_NAME = "Distant Horizons";
|
||||
public static final String VERSION = "3.0.3-b";
|
||||
public static final String VERSION = "3.0.4-b-dev";
|
||||
/** Returns true if the current build is an unstable developer build, false otherwise. */
|
||||
public static final boolean IS_DEV_BUILD = VERSION.toLowerCase().contains("dev");
|
||||
|
||||
|
||||
@@ -28,9 +28,32 @@ layout (std140) uniform fragUniformBlock
|
||||
vec3 calcViewPosition(float fragmentDepth, mat4 invMvmProj)
|
||||
{
|
||||
// normalized device coordinates
|
||||
vec4 ndc = vec4(TexCoord.xy, fragmentDepth, 1.0);
|
||||
vec4 ndc = vec4(
|
||||
TexCoord.x, // UV [0,1]
|
||||
TexCoord.y,
|
||||
fragmentDepth, // depth [0,1]
|
||||
1.0
|
||||
);
|
||||
// AKA: remap the [0,1] UV coordinates and depth value
|
||||
// into the [-1,1] positions used by
|
||||
// the NDC cube rendering stage
|
||||
ndc.xyz = ndc.xyz * 2.0 - 1.0;
|
||||
|
||||
vec4 eyeCoord = invMvmProj * ndc;
|
||||
return eyeCoord.xyz / eyeCoord.w;
|
||||
}
|
||||
|
||||
// TODO vulkan
|
||||
vec3 calcReversedZViewPosition(float fragmentDepth, mat4 invMvmProj)
|
||||
{
|
||||
// Vulkan NDC: xy in [-1,+1], z already in [0,1] — don't remap z
|
||||
vec4 ndc = vec4(
|
||||
TexCoord.x * 2.0 - 1.0, // UV [0,1] -> NDC [-1,+1]
|
||||
TexCoord.y * 2.0 - 1.0,
|
||||
fragmentDepth, // no remapping needed, this depth is already in the [0,1] range
|
||||
1.0 // w=1 placeholder for matrix multiplication
|
||||
);
|
||||
|
||||
vec4 eyeCoord = invMvmProj * ndc;
|
||||
return eyeCoord.xyz / eyeCoord.w;
|
||||
}
|
||||
@@ -71,12 +94,13 @@ void main()
|
||||
{
|
||||
fragColor = vec4(combinedMcDhColor.rgb, 0.0);
|
||||
}
|
||||
// a fragment depth of "1" means the fragment wasn't drawn to,
|
||||
// we only want to fade vanilla rendered objects, not to the sky or LODs
|
||||
else if (mcFragmentDepth < 1.0)
|
||||
// // a fragment depth of "1" means the fragment wasn't drawn to,
|
||||
// // we only want to fade vanilla rendered objects, not to the sky or LODs
|
||||
// else if (mcFragmentDepth < 1.0)
|
||||
else if (mcFragmentDepth > 0)
|
||||
{
|
||||
// fade based on distance from the camera
|
||||
vec3 mcVertexWorldPos = calcViewPosition(mcFragmentDepth, uMcInvMvmProj);
|
||||
vec3 mcVertexWorldPos = calcReversedZViewPosition(mcFragmentDepth, uMcInvMvmProj);
|
||||
float mcFragmentDistance = length(mcVertexWorldPos.xzy);
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#version 150 core
|
||||
|
||||
in vec2 vPosition;
|
||||
in vec4 vColor;
|
||||
|
||||
out vec4 fColor;
|
||||
out vec2 TexCoord;
|
||||
|
||||
@@ -113,12 +113,13 @@ void main()
|
||||
float fadeDistance = uFadeDistanceInBlocks;
|
||||
if (distanceFromCamera < fadeDistance)
|
||||
{
|
||||
#ifdef GL_ARB_derivative_control
|
||||
// Get higher precision derivatives when available
|
||||
vec3 viewNormal = cross(dFdxFine(viewPos.xyz), dFdyFine(viewPos.xyz));
|
||||
#else
|
||||
// TODO vulkan
|
||||
// #ifdef GL_ARB_derivative_control
|
||||
// // Get higher precision derivatives when available
|
||||
// vec3 viewNormal = cross(dFdxFine(viewPos.xyz), dFdyFine(viewPos.xyz));
|
||||
// #else
|
||||
vec3 viewNormal = cross(dFdx(viewPos.xyz), dFdy(viewPos.xyz));
|
||||
#endif
|
||||
// #endif
|
||||
|
||||
viewNormal = normalize(viewNormal);
|
||||
occlusion = GetSpiralOcclusion(TexCoord, viewPos, viewNormal);
|
||||
|
||||
Reference in New Issue
Block a user