tune(environment): make water surface adjustable

This commit is contained in:
Tom Boullay
2026-05-26 22:05:00 +02:00
parent fbe8c0c854
commit fd558db034
2 changed files with 12 additions and 1 deletions
+4
View File
@@ -3,7 +3,9 @@ import type { Vector3Tuple } from "@/types/three/three";
export interface WaterSurfaceConfig { export interface WaterSurfaceConfig {
position: Vector3Tuple; position: Vector3Tuple;
rotation: Vector3Tuple;
size: [number, number]; size: [number, number];
renderOrder: number;
} }
export const WATER_SHADER_CONFIG = { export const WATER_SHADER_CONFIG = {
@@ -30,6 +32,8 @@ export const WATER_SHADER_CONFIG = {
export const WATER_SURFACES: WaterSurfaceConfig[] = [ export const WATER_SURFACES: WaterSurfaceConfig[] = [
{ {
position: [62, TERRAIN_WATER_HEIGHT, -82], position: [62, TERRAIN_WATER_HEIGHT, -82],
rotation: [0, 0, 0],
size: [75, 42], size: [75, 42],
renderOrder: 0,
}, },
]; ];
+8 -1
View File
@@ -10,6 +10,8 @@ import {
export function WaterSurface({ export function WaterSurface({
position, position,
renderOrder,
rotation,
size, size,
}: WaterSurfaceConfig): React.JSX.Element { }: WaterSurfaceConfig): React.JSX.Element {
const materialRef = useRef<THREE.ShaderMaterial>(null); const materialRef = useRef<THREE.ShaderMaterial>(null);
@@ -46,11 +48,16 @@ export function WaterSurface({
}); });
return ( return (
<mesh position={position} rotation={[-Math.PI / 2, 0, 0]} renderOrder={1}> <mesh
position={position}
rotation={[-Math.PI / 2 + rotation[0], rotation[1], rotation[2]]}
renderOrder={renderOrder}
>
<planeGeometry args={size} /> <planeGeometry args={size} />
<shaderMaterial <shaderMaterial
ref={materialRef} ref={materialRef}
attach="material" attach="material"
depthTest
depthWrite={false} depthWrite={false}
fragmentShader={WATER_FRAGMENT_SHADER} fragmentShader={WATER_FRAGMENT_SHADER}
side={THREE.FrontSide} side={THREE.FrontSide}