UNPKG

rl-loadout-lib

Version:

Load Rocket League assets into three.js

55 lines (53 loc) 1.86 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"); exports.UNIFORMS = ` uniform sampler2D rgbaMap; uniform vec3 paintColor; uniform int painted; `; const DIFFUSE_SHADER = ` // Look up a color from the texture. vec4 texelColor = texture2D(map, vUv); vec4 rgbaMapColor = texture2D(rgbaMap, vUv); // paint if (painted == 1) { texelColor.rgb = blendNormal(texelColor.rgb, paintColor.rgb, mask); } texelColor = mapTexelToLinear(texelColor); diffuseColor *= texelColor; `; class RimMaterial extends extended_mesh_standard_material_1.ExtendedMeshStandardMaterial { constructor(maskChannel, invertMask = false) { super(); this.maskChannel = maskChannel; this.invertMask = invertMask; this.fragmentShader = extended_mesh_standard_material_1.ExtendedMeshStandardMaterial.createFragmentShader(exports.UNIFORMS, DIFFUSE_SHADER.replace('mask', `${invertMask ? '1.0 - ' : ''}rgbaMapColor.${maskChannel}`)); 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; } } animate(t) { } } exports.RimMaterial = RimMaterial; //# sourceMappingURL=rim-material.js.map