mirror of
https://github.com/tengge1/ShadowEditor.git
synced 2026-01-25 15:08:11 +00:00
70 lines
1.8 KiB
JavaScript
70 lines
1.8 KiB
JavaScript
import BaseSerializer from '../BaseSerializer';
|
|
import MaterialSerializer from './MaterialSerializer';
|
|
|
|
/**
|
|
* RawShaderMaterialSerializer
|
|
* @author tengge / https://github.com/tengge1
|
|
*/
|
|
function RawShaderMaterialSerializer() {
|
|
BaseSerializer.call(this);
|
|
}
|
|
|
|
RawShaderMaterialSerializer.prototype = Object.create(BaseSerializer.prototype);
|
|
RawShaderMaterialSerializer.prototype.constructor = RawShaderMaterialSerializer;
|
|
|
|
RawShaderMaterialSerializer.prototype.toJSON = function (obj) {
|
|
var json = MaterialSerializer.prototype.toJSON.call(this, obj);
|
|
|
|
json.defines = obj.defines;
|
|
|
|
json.uniforms = {};
|
|
|
|
for (var i in obj.uniforms) {
|
|
var uniform = obj.uniforms[i];
|
|
if (uniform.value instanceof THREE.Color) {
|
|
json.uniforms[i] = {
|
|
type: 'color',
|
|
value: uniform.value
|
|
};
|
|
} else {
|
|
json.uniforms[i] = {
|
|
value: uniform.value
|
|
};
|
|
}
|
|
}
|
|
|
|
json.vertexShader = obj.vertexShader;
|
|
json.fragmentShader = obj.fragmentShader;
|
|
|
|
return json;
|
|
};
|
|
|
|
RawShaderMaterialSerializer.prototype.fromJSON = function (json, parent) {
|
|
var obj = parent === undefined ? new THREE.RawShaderMaterial() : parent;
|
|
|
|
MaterialSerializer.prototype.fromJSON.call(this, json, obj);
|
|
|
|
obj.defines = json.defines;
|
|
|
|
obj.uniforms = {};
|
|
|
|
for (var i in json.uniforms) {
|
|
var uniform = json.uniforms[i];
|
|
if (uniform.type === 'color') {
|
|
obj.uniforms[i] = {
|
|
value: new THREE.Color(uniform.value)
|
|
};
|
|
} else {
|
|
obj.uniforms[i] = {
|
|
value: uniform.value
|
|
};
|
|
}
|
|
}
|
|
|
|
obj.vertexShader = json.vertexShader;
|
|
obj.fragmentShader = json.fragmentShader;
|
|
|
|
return obj;
|
|
};
|
|
|
|
export default RawShaderMaterialSerializer; |