Refactor uniform creation in water material shaders and tests
This commit is contained in:
@@ -933,24 +933,22 @@ export function createWaterMaterial(options) {
|
||||
}
|
||||
`;
|
||||
|
||||
const uniforms = UniformsUtils.merge([
|
||||
UniformsLib.fog,
|
||||
{
|
||||
time: animationUniform,
|
||||
waterColor: { value: [cr, cg, cb] },
|
||||
surfaceOpacity: { value: clampedOpacity },
|
||||
waveStrength: { value: waveStrength },
|
||||
isTopFace: { value: topFaceFlag },
|
||||
surfaceDisplacementEnabled: surfaceDisplacementEnabledUniform,
|
||||
halfSize: { value: halfSize },
|
||||
contactPatches: contactPatchesUniform,
|
||||
contactPatchAxes: contactPatchAxesUniform,
|
||||
contactPatchShapes: contactPatchShapesUniform,
|
||||
reflectionTexture: reflectionTextureUniform,
|
||||
reflectionMatrix: reflectionMatrixUniform,
|
||||
reflectionEnabled: reflectionEnabledUniform
|
||||
}
|
||||
]);
|
||||
const uniforms = UniformsUtils.clone(UniformsLib.fog);
|
||||
Object.assign(uniforms, {
|
||||
time: animationUniform,
|
||||
waterColor: { value: [cr, cg, cb] },
|
||||
surfaceOpacity: { value: clampedOpacity },
|
||||
waveStrength: { value: waveStrength },
|
||||
isTopFace: { value: topFaceFlag },
|
||||
surfaceDisplacementEnabled: surfaceDisplacementEnabledUniform,
|
||||
halfSize: { value: halfSize },
|
||||
contactPatches: contactPatchesUniform,
|
||||
contactPatchAxes: contactPatchAxesUniform,
|
||||
contactPatchShapes: contactPatchShapesUniform,
|
||||
reflectionTexture: reflectionTextureUniform,
|
||||
reflectionMatrix: reflectionMatrixUniform,
|
||||
reflectionEnabled: reflectionEnabledUniform
|
||||
});
|
||||
|
||||
const material = new ShaderMaterial({
|
||||
vertexShader,
|
||||
|
||||
@@ -1188,24 +1188,22 @@ export function createWaterMaterial(options: WaterMaterialOptions): WaterMateria
|
||||
}
|
||||
`;
|
||||
|
||||
const uniforms = UniformsUtils.merge([
|
||||
UniformsLib.fog,
|
||||
{
|
||||
time: animationUniform,
|
||||
waterColor: { value: [cr, cg, cb] },
|
||||
surfaceOpacity: { value: clampedOpacity },
|
||||
waveStrength: { value: waveStrength },
|
||||
isTopFace: { value: topFaceFlag },
|
||||
surfaceDisplacementEnabled: surfaceDisplacementEnabledUniform,
|
||||
halfSize: { value: halfSize },
|
||||
contactPatches: contactPatchesUniform,
|
||||
contactPatchAxes: contactPatchAxesUniform,
|
||||
contactPatchShapes: contactPatchShapesUniform,
|
||||
reflectionTexture: reflectionTextureUniform,
|
||||
reflectionMatrix: reflectionMatrixUniform,
|
||||
reflectionEnabled: reflectionEnabledUniform
|
||||
}
|
||||
]);
|
||||
const uniforms = UniformsUtils.clone(UniformsLib.fog);
|
||||
Object.assign(uniforms, {
|
||||
time: animationUniform,
|
||||
waterColor: { value: [cr, cg, cb] },
|
||||
surfaceOpacity: { value: clampedOpacity },
|
||||
waveStrength: { value: waveStrength },
|
||||
isTopFace: { value: topFaceFlag },
|
||||
surfaceDisplacementEnabled: surfaceDisplacementEnabledUniform,
|
||||
halfSize: { value: halfSize },
|
||||
contactPatches: contactPatchesUniform,
|
||||
contactPatchAxes: contactPatchAxesUniform,
|
||||
contactPatchShapes: contactPatchShapesUniform,
|
||||
reflectionTexture: reflectionTextureUniform,
|
||||
reflectionMatrix: reflectionMatrixUniform,
|
||||
reflectionEnabled: reflectionEnabledUniform
|
||||
});
|
||||
|
||||
const material = new ShaderMaterial({
|
||||
vertexShader,
|
||||
|
||||
@@ -616,5 +616,14 @@ describe("water material helpers", () => {
|
||||
expect(result.reflectionTextureUniform).not.toBeNull();
|
||||
expect(result.reflectionMatrixUniform).not.toBeNull();
|
||||
expect(result.reflectionEnabledUniform?.value).toBe(0);
|
||||
expect(result.animationUniform).toBe(material.uniforms["time"]);
|
||||
expect(result.reflectionEnabledUniform).toBe(material.uniforms["reflectionEnabled"]);
|
||||
|
||||
if (result.animationUniform !== null && result.reflectionEnabledUniform !== null) {
|
||||
result.animationUniform.value = 2.5;
|
||||
result.reflectionEnabledUniform.value = 0.36;
|
||||
expect(material.uniforms["time"]?.value).toBe(2.5);
|
||||
expect(material.uniforms["reflectionEnabled"]?.value).toBe(0.36);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user