rl-loadout-lib
Version:
Load Rocket League assets into three.js
50 lines (48 loc) • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const extended_mesh_standard_material_1 = require("./extended-mesh-standard-material");
const three_1 = require("three");
const UNIFORMS = `
uniform sampler2D rgbaMap;
uniform vec3 paintColor;
uniform int painted;
`;
const DIFFUSE_SHADER = `
vec4 texelColor = texture2D(map, vUv);
vec4 rgbaMapColor = texture2D(rgbaMap, vUv);
// paint
if (painted == 1) {
texelColor.rgb = blendNormal(texelColor.rgb, paintColor.rgb, rgbaMapColor.a);
}
texelColor = mapTexelToLinear(texelColor);
diffuseColor *= texelColor;
`;
class TopperMaterial extends extended_mesh_standard_material_1.ExtendedMeshStandardMaterial {
constructor() {
super();
this.fragmentShader = extended_mesh_standard_material_1.ExtendedMeshStandardMaterial.createFragmentShader(UNIFORMS, DIFFUSE_SHADER);
this.uniforms.rgbaMap = { value: null };
this.uniforms.paintColor = { value: new three_1.Color() };
this.uniforms.painted = { value: 0 };
}
get rgbaMap() {
return this.uniforms.rgbaMap.value;
}
set rgbaMap(rgbaMap) {
this.uniforms.rgbaMap.value = rgbaMap;
}
get paintColor() {
return this.uniforms.paintColor.value;
}
set paintColor(paintColor) {
if (paintColor != undefined) {
this.uniforms.paintColor.value.copy(paintColor);
this.uniforms.painted.value = 1;
}
else {
this.uniforms.painted.value = 0.0;
}
}
}
exports.TopperMaterial = TopperMaterial;
//# sourceMappingURL=topper-material.js.map