rl-loadout-lib
Version:
Load Rocket League assets into three.js
46 lines (42 loc) • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const rim_material_1 = require("../../webgl/rim-material");
const ANIM_INTERVAL = 1000.0;
const UNIFORMS = `
uniform sampler2D rgbaMap;
uniform float animOffset;
uniform vec3 paintColor;
uniform int painted;
`;
const DIFFUSE_SHADER = `
vec2 rgbaCoord = vUv;
rgbaCoord.x = mod(rgbaCoord.x + animOffset, 1.0);
// Look up a color from the texture.
vec4 texelColor = texture2D(map, vUv);
vec4 rgbaMapColor = texture2D(rgbaMap, rgbaCoord);
vec4 lights = texture2D(rgbaMap, vUv);
lights.r = 0.0;
// light
if (painted == 1) {
texelColor.rgb = blendNormal(texelColor.rgb, paintColor.rgb, rgbaMapColor.r * lights.g * lights.b);
} else {
texelColor.rgb = blendNormal(texelColor.rgb, lights.rgb, rgbaMapColor.r * lights.g * lights.b);
}
texelColor = mapTexelToLinear(texelColor);
diffuseColor *= texelColor;
`;
/**
* Animated rim texture for Photon wheels.
*/
class LightWheelRimMaterial extends rim_material_1.RimMaterial {
constructor() {
super('');
this.fragmentShader = rim_material_1.RimMaterial.createFragmentShader(UNIFORMS, DIFFUSE_SHADER);
this.uniforms.animOffset = { value: 0.0 };
}
animate(t) {
this.uniforms.animOffset.value = (t % ANIM_INTERVAL) / ANIM_INTERVAL;
}
}
exports.LightWheelRimMaterial = LightWheelRimMaterial;
//# sourceMappingURL=light-wheel-model.js.map