UNPKG

rl-loadout-lib

Version:

Load Rocket League assets into three.js

50 lines (48 loc) 1.63 kB
"use strict"; 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