ami.js
Version:
<p align="center"> <img src="https://cloud.githubusercontent.com/assets/214063/23213764/78ade038-f90c-11e6-8208-4fcade5f3832.png" width="60%"> </p>
58 lines (49 loc) • 1.52 kB
JavaScript
/**
* Helpers material mixin.
*
* @module helpers/material/mixin
*/
let HerlpersMaterialMixin = (superclass) => class extends superclass {
_createMaterial(extraOptions) {
// generate shaders on-demand!
let fs = new this._shadersFragment(this._uniforms);
let vs = new this._shadersVertex();
// material
let globalOptions = {
uniforms: this._uniforms,
vertexShader: vs.compute(),
fragmentShader: fs.compute(),
};
let options = Object.assign(extraOptions, globalOptions);
this._material = new THREE.ShaderMaterial(options);
this._material.needsUpdate = true;
}
_updateMaterial() {
// generate shaders on-demand!
let fs = new this._shadersFragment(this._uniforms);
let vs = new this._shadersVertex();
this._material.vertexShader = vs.compute();
this._material.fragmentShader = fs.compute();
this._material.needsUpdate = true;
}
_prepareTexture() {
this._textures = [];
for (let m = 0; m < this._stack._rawData.length; m++) {
let tex = new THREE.DataTexture(
this._stack.rawData[m],
this._stack.textureSize,
this._stack.textureSize,
this._stack.textureType,
THREE.UnsignedByteType,
THREE.UVMapping,
THREE.ClampToEdgeWrapping,
THREE.ClampToEdgeWrapping,
THREE.NearestFilter,
THREE.NearestFilter);
tex.needsUpdate = true;
tex.flipY = true;
this._textures.push(tex);
}
}
};
export default HerlpersMaterialMixin;