|
| 1 | +import { Color } from '../math/Color.js'; |
1 | 2 | import { Vector2 } from '../math/Vector2.js'; |
| 3 | +import { Vector3 } from '../math/Vector3.js'; |
| 4 | +import { Vector4 } from '../math/Vector4.js'; |
| 5 | +import { Matrix4 } from '../math/Matrix4.js'; |
2 | 6 | import { FileLoader } from './FileLoader.js'; |
3 | 7 | import { DefaultLoadingManager } from './LoadingManager.js'; |
4 | 8 | import * as Materials from '../materials/Materials.js'; |
@@ -63,9 +67,6 @@ Object.assign( MaterialLoader.prototype, { |
63 | 67 | if ( json.shininess !== undefined ) material.shininess = json.shininess; |
64 | 68 | if ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat; |
65 | 69 | if ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness; |
66 | | - if ( json.uniforms !== undefined ) material.uniforms = json.uniforms; |
67 | | - if ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader; |
68 | | - if ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader; |
69 | 70 | if ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors; |
70 | 71 | if ( json.fog !== undefined ) material.fog = json.fog; |
71 | 72 | if ( json.flatShading !== undefined ) material.flatShading = json.flatShading; |
@@ -100,6 +101,54 @@ Object.assign( MaterialLoader.prototype, { |
100 | 101 | if ( json.visible !== undefined ) material.visible = json.visible; |
101 | 102 | if ( json.userData !== undefined ) material.userData = json.userData; |
102 | 103 |
|
| 104 | + // Shader Material |
| 105 | + |
| 106 | + if ( json.uniforms !== undefined ) { |
| 107 | + |
| 108 | + for ( var name in json.uniforms ) { |
| 109 | + |
| 110 | + var uniform = json.uniforms[ name ]; |
| 111 | + |
| 112 | + material.uniforms[ name ] = {}; |
| 113 | + |
| 114 | + switch ( uniform.type ) { |
| 115 | + |
| 116 | + case 't': |
| 117 | + material.uniforms[ name ].value = getTexture( uniform.value ); |
| 118 | + break; |
| 119 | + |
| 120 | + case 'c': |
| 121 | + material.uniforms[ name ].value = new Color().setHex( uniform.value ); |
| 122 | + break; |
| 123 | + |
| 124 | + case 'v2': |
| 125 | + material.uniforms[ name ].value = new Vector2().fromArray( uniform.value ); |
| 126 | + break; |
| 127 | + |
| 128 | + case 'v3': |
| 129 | + material.uniforms[ name ].value = new Vector3().fromArray( uniform.value ); |
| 130 | + break; |
| 131 | + |
| 132 | + case 'v4': |
| 133 | + material.uniforms[ name ].value = new Vector4().fromArray( uniform.value ); |
| 134 | + break; |
| 135 | + |
| 136 | + case 'm4': |
| 137 | + material.uniforms[ name ].value = new Matrix4().fromArray( uniform.value ); |
| 138 | + break; |
| 139 | + |
| 140 | + default: |
| 141 | + material.uniforms[ name ].value = uniform.value; |
| 142 | + |
| 143 | + } |
| 144 | + |
| 145 | + } |
| 146 | + |
| 147 | + } |
| 148 | + |
| 149 | + if ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader; |
| 150 | + if ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader; |
| 151 | + |
103 | 152 | // Deprecated |
104 | 153 |
|
105 | 154 | if ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading |
|
0 commit comments