@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
130 lines (129 loc) • 4.66 kB
JavaScript
"use strict";
import { MeshPhysicalMaterial } from "three";
import { FrontSide } from "three";
import { PrimitiveMatNode } from "./_Base";
import { NodeParamsConfig } from "../utils/params/ParamsConfig";
import { ColorsController, ColorParamConfig } from "./utils/ColorsController";
import {
AdvancedCommonController,
AdvancedCommonParamConfig
} from "./utils/AdvancedCommonController";
import { TextureMapController, MapParamConfig } from "./utils/TextureMapController";
import {
TextureAlphaMapController,
AlphaMapParamConfig
} from "./utils/TextureAlphaMapController";
import { TextureEnvMapController, EnvMapParamConfig } from "./utils/TextureEnvMapController";
import {
TextureBumpMapController,
BumpMapParamConfig
} from "./utils/TextureBumpMapController";
import {
TextureNormalMapController,
NormalMapParamConfig
} from "./utils/TextureNormalMapController";
import {
TextureEmissiveMapController,
EmissiveMapParamConfig
} from "./utils/TextureEmissiveMapController";
import {
TextureMetalnessRoughnessMapController,
MetalnessRoughnessMapParamConfig
} from "./utils/TextureMetalnessRoughnessMapController";
import { MeshPhysicalController, MeshPhysicalParamConfig } from "./utils/MeshPhysicalController";
import {
TextureLightMapController,
LightMapParamConfig
} from "./utils/TextureLightMapController";
import {
TextureDisplacementMapController,
DisplacementMapParamConfig
} from "./utils/TextureDisplacementMapController";
import { TextureAOMapController, AOMapParamConfig } from "./utils/TextureAOMapController";
import { WireframeController, WireframeParamConfig } from "./utils/WireframeController";
import { FogController, FogParamConfig } from "./utils/FogController";
import { DefaultFolderParamConfig } from "./utils/DefaultFolder";
import { TexturesFolderParamConfig } from "./utils/TexturesFolder";
import { AdvancedFolderParamConfig } from "./utils/AdvancedFolder";
import { MatType } from "../../poly/registers/nodes/types/Mat";
class MeshPhysicalMatParamsConfig extends FogParamConfig(
WireframeParamConfig(
AdvancedCommonParamConfig(
/* advanced */
AdvancedFolderParamConfig(
MeshPhysicalParamConfig(
MetalnessRoughnessMapParamConfig(
NormalMapParamConfig(
LightMapParamConfig(
EnvMapParamConfig(
EmissiveMapParamConfig(
DisplacementMapParamConfig(
BumpMapParamConfig(
AOMapParamConfig(
AlphaMapParamConfig(
MapParamConfig(
/* textures */
TexturesFolderParamConfig(
ColorParamConfig(
DefaultFolderParamConfig(NodeParamsConfig)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
) {
}
const ParamsConfig = new MeshPhysicalMatParamsConfig();
export class MeshPhysicalMatNode extends PrimitiveMatNode {
constructor() {
super(...arguments);
this.paramsConfig = ParamsConfig;
this.controllers = {
colors: new ColorsController(this),
advancedCommon: new AdvancedCommonController(this),
alphaMap: new TextureAlphaMapController(this),
aoMap: new TextureAOMapController(this),
bumpMap: new TextureBumpMapController(this),
displacementMap: new TextureDisplacementMapController(this),
emissiveMap: new TextureEmissiveMapController(this),
envMap: new TextureEnvMapController(this),
fog: new FogController(this),
lightMap: new TextureLightMapController(this),
map: new TextureMapController(this),
metalnessRoughnessMap: new TextureMetalnessRoughnessMapController(this),
normalMap: new TextureNormalMapController(this),
physical: new MeshPhysicalController(this),
wireframe: new WireframeController(this)
};
this.controllersList = Object.values(this.controllers);
}
static type() {
return MatType.MESH_PHYSICAL;
}
createMaterial() {
return new MeshPhysicalMaterial({
vertexColors: false,
side: FrontSide,
color: 16777215,
opacity: 1,
metalness: 1,
roughness: 0
});
}
async cook() {
this._material = this._material || this.createMaterial();
await Promise.all(this.controllersPromises(this._material));
this.setMaterial(this._material);
}
}