Skip to content

Commit f10da70

Browse files
committed
UniformsUtils: Refactoring.
1 parent 0c51e57 commit f10da70

File tree

5 files changed

+53
-54
lines changed

5 files changed

+53
-54
lines changed

src/materials/ShaderMaterial.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Material } from './Material.js';
2-
import { UniformsUtils } from '../renderers/shaders/UniformsUtils.js';
2+
import { cloneUniforms } from '../renderers/shaders/UniformsUtils.js';
33

44
/**
55
* @author alteredq / http://alteredqualia.com/
@@ -91,7 +91,7 @@ ShaderMaterial.prototype.copy = function ( source ) {
9191
this.fragmentShader = source.fragmentShader;
9292
this.vertexShader = source.vertexShader;
9393

94-
this.uniforms = UniformsUtils.clone( source.uniforms );
94+
this.uniforms = cloneUniforms( source.uniforms );
9595

9696
this.defines = Object.assign( {}, source.defines );
9797

src/renderers/WebGLRenderer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { Frustum } from '../math/Frustum.js';
1616
import { Matrix4 } from '../math/Matrix4.js';
1717
import { ShaderLib } from './shaders/ShaderLib.js';
1818
import { UniformsLib } from './shaders/UniformsLib.js';
19-
import { UniformsUtils } from './shaders/UniformsUtils.js';
19+
import { cloneUniforms } from './shaders/UniformsUtils.js';
2020
import { Vector3 } from '../math/Vector3.js';
2121
import { Vector4 } from '../math/Vector4.js';
2222
import { WebGLAnimation } from './webgl/WebGLAnimation.js';
@@ -1427,7 +1427,7 @@ function WebGLRenderer( parameters ) {
14271427

14281428
materialProperties.shader = {
14291429
name: material.type,
1430-
uniforms: UniformsUtils.clone( shader.uniforms ),
1430+
uniforms: cloneUniforms( shader.uniforms ),
14311431
vertexShader: shader.vertexShader,
14321432
fragmentShader: shader.fragmentShader
14331433
};

src/renderers/shaders/ShaderLib.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ShaderChunk } from './ShaderChunk.js';
2-
import { UniformsUtils } from './UniformsUtils.js';
2+
import { mergeUniforms } from './UniformsUtils.js';
33
import { Vector3 } from '../../math/Vector3.js';
44
import { UniformsLib } from './UniformsLib.js';
55
import { Color } from '../../math/Color.js';
@@ -15,7 +15,7 @@ var ShaderLib = {
1515

1616
basic: {
1717

18-
uniforms: UniformsUtils.merge( [
18+
uniforms: mergeUniforms( [
1919
UniformsLib.common,
2020
UniformsLib.specularmap,
2121
UniformsLib.envmap,
@@ -31,7 +31,7 @@ var ShaderLib = {
3131

3232
lambert: {
3333

34-
uniforms: UniformsUtils.merge( [
34+
uniforms: mergeUniforms( [
3535
UniformsLib.common,
3636
UniformsLib.specularmap,
3737
UniformsLib.envmap,
@@ -52,7 +52,7 @@ var ShaderLib = {
5252

5353
phong: {
5454

55-
uniforms: UniformsUtils.merge( [
55+
uniforms: mergeUniforms( [
5656
UniformsLib.common,
5757
UniformsLib.specularmap,
5858
UniformsLib.envmap,
@@ -79,7 +79,7 @@ var ShaderLib = {
7979

8080
standard: {
8181

82-
uniforms: UniformsUtils.merge( [
82+
uniforms: mergeUniforms( [
8383
UniformsLib.common,
8484
UniformsLib.envmap,
8585
UniformsLib.aomap,
@@ -107,7 +107,7 @@ var ShaderLib = {
107107

108108
matcap: {
109109

110-
uniforms: UniformsUtils.merge( [
110+
uniforms: mergeUniforms( [
111111
UniformsLib.common,
112112
UniformsLib.bumpmap,
113113
UniformsLib.normalmap,
@@ -125,7 +125,7 @@ var ShaderLib = {
125125

126126
points: {
127127

128-
uniforms: UniformsUtils.merge( [
128+
uniforms: mergeUniforms( [
129129
UniformsLib.points,
130130
UniformsLib.fog
131131
] ),
@@ -137,7 +137,7 @@ var ShaderLib = {
137137

138138
dashed: {
139139

140-
uniforms: UniformsUtils.merge( [
140+
uniforms: mergeUniforms( [
141141
UniformsLib.common,
142142
UniformsLib.fog,
143143
{
@@ -154,7 +154,7 @@ var ShaderLib = {
154154

155155
depth: {
156156

157-
uniforms: UniformsUtils.merge( [
157+
uniforms: mergeUniforms( [
158158
UniformsLib.common,
159159
UniformsLib.displacementmap
160160
] ),
@@ -166,7 +166,7 @@ var ShaderLib = {
166166

167167
normal: {
168168

169-
uniforms: UniformsUtils.merge( [
169+
uniforms: mergeUniforms( [
170170
UniformsLib.common,
171171
UniformsLib.bumpmap,
172172
UniformsLib.normalmap,
@@ -183,7 +183,7 @@ var ShaderLib = {
183183

184184
sprite: {
185185

186-
uniforms: UniformsUtils.merge( [
186+
uniforms: mergeUniforms( [
187187
UniformsLib.sprite,
188188
UniformsLib.fog
189189
] ),
@@ -234,7 +234,7 @@ var ShaderLib = {
234234

235235
distanceRGBA: {
236236

237-
uniforms: UniformsUtils.merge( [
237+
uniforms: mergeUniforms( [
238238
UniformsLib.common,
239239
UniformsLib.displacementmap,
240240
{
@@ -251,7 +251,7 @@ var ShaderLib = {
251251

252252
shadow: {
253253

254-
uniforms: UniformsUtils.merge( [
254+
uniforms: mergeUniforms( [
255255
UniformsLib.lights,
256256
UniformsLib.fog,
257257
{
@@ -269,7 +269,7 @@ var ShaderLib = {
269269

270270
ShaderLib.physical = {
271271

272-
uniforms: UniformsUtils.merge( [
272+
uniforms: mergeUniforms( [
273273
ShaderLib.standard.uniforms,
274274
{
275275
clearCoat: { value: 0 },

src/renderers/shaders/UniformsUtils.js

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,66 +2,65 @@
22
* Uniform Utilities
33
*/
44

5-
var UniformsUtils = {
5+
export function cloneUniforms( src ) {
66

7-
merge: function ( uniforms ) {
7+
var dst = {};
88

9-
var merged = {};
9+
for ( var u in src ) {
1010

11-
for ( var u = 0; u < uniforms.length; u ++ ) {
11+
dst[ u ] = {};
1212

13-
var tmp = this.clone( uniforms[ u ] );
13+
for ( var p in src[ u ] ) {
1414

15-
for ( var p in tmp ) {
15+
var property = src[ u ][ p ];
1616

17-
merged[ p ] = tmp[ p ];
17+
if ( property && ( property.isColor ||
18+
property.isMatrix3 || property.isMatrix4 ||
19+
property.isVector2 || property.isVector3 || property.isVector4 ||
20+
property.isTexture ) ) {
1821

19-
}
20-
21-
}
22+
dst[ u ][ p ] = property.clone();
2223

23-
return merged;
24+
} else if ( Array.isArray( property ) ) {
2425

25-
},
26+
dst[ u ][ p ] = property.slice();
2627

27-
clone: function ( uniforms_src ) {
28+
} else {
2829

29-
var uniforms_dst = {};
30+
dst[ u ][ p ] = property;
3031

31-
for ( var u in uniforms_src ) {
32-
33-
uniforms_dst[ u ] = {};
32+
}
3433

35-
for ( var p in uniforms_src[ u ] ) {
34+
}
3635

37-
var parameter_src = uniforms_src[ u ][ p ];
36+
}
3837

39-
if ( parameter_src && ( parameter_src.isColor ||
40-
parameter_src.isMatrix3 || parameter_src.isMatrix4 ||
41-
parameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 ||
42-
parameter_src.isTexture ) ) {
38+
return dst;
4339

44-
uniforms_dst[ u ][ p ] = parameter_src.clone();
40+
}
4541

46-
} else if ( Array.isArray( parameter_src ) ) {
42+
export function mergeUniforms( uniforms ) {
4743

48-
uniforms_dst[ u ][ p ] = parameter_src.slice();
44+
var merged = {};
4945

50-
} else {
46+
for ( var u = 0; u < uniforms.length; u ++ ) {
5147

52-
uniforms_dst[ u ][ p ] = parameter_src;
48+
var tmp = cloneUniforms( uniforms[ u ] );
5349

54-
}
50+
for ( var p in tmp ) {
5551

56-
}
52+
merged[ p ] = tmp[ p ];
5753

5854
}
5955

60-
return uniforms_dst;
61-
6256
}
6357

64-
};
58+
return merged;
59+
60+
}
61+
62+
// Legacy
6563

64+
var UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };
6665

6766
export { UniformsUtils };

src/renderers/webgl/WebGLBackground.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { ShaderMaterial } from '../../materials/ShaderMaterial.js';
99
import { Color } from '../../math/Color.js';
1010
import { Mesh } from '../../objects/Mesh.js';
1111
import { ShaderLib } from '../shaders/ShaderLib.js';
12-
import { UniformsUtils } from '../shaders/UniformsUtils.js';
12+
import { cloneUniforms } from '../shaders/UniformsUtils.js';
1313

1414
function WebGLBackground( renderer, state, objects, premultipliedAlpha ) {
1515

@@ -48,7 +48,7 @@ function WebGLBackground( renderer, state, objects, premultipliedAlpha ) {
4848
new BoxBufferGeometry( 1, 1, 1 ),
4949
new ShaderMaterial( {
5050
type: 'BackgroundCubeMaterial',
51-
uniforms: UniformsUtils.clone( ShaderLib.cube.uniforms ),
51+
uniforms: cloneUniforms( ShaderLib.cube.uniforms ),
5252
vertexShader: ShaderLib.cube.vertexShader,
5353
fragmentShader: ShaderLib.cube.fragmentShader,
5454
side: BackSide,
@@ -96,7 +96,7 @@ function WebGLBackground( renderer, state, objects, premultipliedAlpha ) {
9696
new PlaneBufferGeometry( 2, 2 ),
9797
new ShaderMaterial( {
9898
type: 'BackgroundMaterial',
99-
uniforms: UniformsUtils.clone( ShaderLib.background.uniforms ),
99+
uniforms: cloneUniforms( ShaderLib.background.uniforms ),
100100
vertexShader: ShaderLib.background.vertexShader,
101101
fragmentShader: ShaderLib.background.fragmentShader,
102102
side: FrontSide,

0 commit comments

Comments
 (0)