feat: hide grid when looking at bottom

This commit is contained in:
TrèsAbhi committed 2024-01-03 12:35:10 -06:00
1 parent b745ad2fa7
commit 39e4bce254
1 file changed
+5 -8
+5 -8
View File
@@ -7,15 +7,12 @@ interface InfiniteGridHelperProps extends MeshProps {
size2?: number;
color?: THREE.Color;
distance?: number;
axes?: string;
}
/**
* Thanks, Fyrestar, for [THREE.InfiniteGridHelper](https://github.com/Fyrestar/THREE.InfiniteGridHelper/)!
*/
const InfiniteGridHelper = forwardRef<Mesh, InfiniteGridHelperProps>(
({ size1, size2, color, axes = 'xzy', distance, ...props }, ref) => {
const planeAxes = axes.slice(0, 2);
({ size1, size2, color, distance, ...props }, ref) => {
return (
<mesh {...props} ref={ref} frustumCulled={false}>
<shaderMaterial
@@ -36,7 +33,7 @@ const InfiniteGridHelper = forwardRef<Mesh, InfiniteGridHelperProps>(
uniform float uDistance;
void main() {
vec3 pos = position.${axes} * uDistance;
vec3 pos = position.xzy * uDistance;
worldPosition = pos;
gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);
}
@@ -51,15 +48,15 @@ const InfiniteGridHelper = forwardRef<Mesh, InfiniteGridHelperProps>(
vec2 origin = vec2(0.0, 0.0);
float getGrid(float size) {
vec2 r = worldPosition.${planeAxes} / size;
vec2 r = worldPosition.xz / size;
vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);
float line = min(grid.x, grid.y);
return 1.0 - min(line, 1.0);
return (1.0 - min(line, 1.0)) * max(0.0, min(1.0, cameraPosition.y / 5.0));
}
void main() {
float d = 1.0 - min(distance(origin, worldPosition.${planeAxes}) / uDistance, 1.0);
float d = 1.0 - min(distance(origin, worldPosition.xz) / uDistance, 1.0);
float g1 = getGrid(uSize1);
float g2 = getGrid(uSize2);
gl_FragColor = vec4(uColor.rgb, mix(g2, g1, g1) * pow(d, 10.0));