1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import { Effect, ProceduralTexture, Color3, Scene, Texture, serialize, SerializationHelper } from "babylonjs";
- Effect.ShadersStore["marbleProceduralTexturePixelShader"] = require("./marbleProceduralTexture.fragment.fx");
- export class MarbleProceduralTexture extends ProceduralTexture {
- private _numberOfTilesHeight: number = 3;
- private _numberOfTilesWidth: number = 3;
- private _amplitude: number = 9.0;
- private _jointColor = new Color3(0.72, 0.72, 0.72);
- constructor(name: string, size: number, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean) {
- super(name, size, "marbleProceduralTexture", scene, fallbackTexture, generateMipMaps);
- this.updateShaderUniforms();
- }
- public updateShaderUniforms() {
- this.setFloat("numberOfTilesHeight", this._numberOfTilesHeight);
- this.setFloat("numberOfTilesWidth", this._numberOfTilesWidth);
- this.setFloat("amplitude", this._amplitude);
- this.setColor3("jointColor", this._jointColor);
- }
- @serialize()
- public get numberOfTilesHeight(): number {
- return this._numberOfTilesHeight;
- }
- public set numberOfTilesHeight(value: number) {
- this._numberOfTilesHeight = value;
- this.updateShaderUniforms();
- }
- @serialize()
- public get amplitude(): number {
- return this._amplitude;
- }
- public set amplitude(value: number) {
- this._amplitude = value;
- this.updateShaderUniforms();
- }
- @serialize()
- public get numberOfTilesWidth(): number {
- return this._numberOfTilesWidth;
- }
- public set numberOfTilesWidth(value: number) {
- this._numberOfTilesWidth = value;
- this.updateShaderUniforms();
- }
- @serialize()
- public get jointColor(): Color3 {
- return this._jointColor;
- }
- public set jointColor(value: Color3) {
- this._jointColor = value;
- this.updateShaderUniforms();
- }
- /**
- * Serializes this marble procedural texture
- * @returns a serialized marble procedural texture object
- */
- public serialize(): any {
- var serializationObject = SerializationHelper.Serialize(this, super.serialize());
- serializationObject.customType = "BABYLON.MarbleProceduralTexture";
- return serializationObject;
- }
- /**
- * Creates a Marble Procedural Texture from parsed marble procedural texture data
- * @param parsedTexture defines parsed texture data
- * @param scene defines the current scene
- * @param rootUrl defines the root URL containing marble procedural texture information
- * @returns a parsed Marble Procedural Texture
- */
- public static Parse(parsedTexture: any, scene: Scene, rootUrl: string): MarbleProceduralTexture {
- var texture = SerializationHelper.Parse(() => new MarbleProceduralTexture(parsedTexture.name, parsedTexture._size, scene, undefined, parsedTexture._generateMipMaps), parsedTexture, scene, rootUrl);
- return texture;
- }
- }
|