applyEmissiveMap function
void
applyEmissiveMap(
- Surface s,
- Float32List v,
- ShaderBindings b,
- FragmentContext c, {
- bool transformed = false,
Implementation
void applyEmissiveMap(
Surface s,
Float32List v,
ShaderBindings b,
FragmentContext c, {
bool transformed = false,
}) {
final map = b.textures['emissive_texture'];
if (map == null) return;
final (u: mu, v: mv, footprint: uv) = mapUv(
kMapEmissive,
v,
b,
c,
transformed: transformed,
);
final texel = map.sample(mu, mv, du: uv.du, dv: uv.dv);
final factor = b.vec4('FragInfo', 'emissive', Vector4.zero());
final strength = b.vec4('FragInfo', 'material2', Vector4.zero()).w;
s.emissive = Vector3(
toLinear(texel.x) * factor.x * strength,
toLinear(texel.y) * factor.y * strength,
toLinear(texel.z) * factor.z * strength,
);
}