playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
30 lines (29 loc) • 1.02 kB
JavaScript
import { math } from "../../../../core/math/math.js";
import { Vec2 } from "../../../../core/math/vec2.js";
const extractTextureTransform = (source, material, maps) => {
let map;
const texCoord = source.texCoord;
if (texCoord) {
for (map = 0; map < maps.length; ++map) {
material[`${maps[map]}MapUv`] = texCoord;
}
}
const zeros = [0, 0];
const ones = [1, 1];
const textureTransform = source.extensions?.KHR_texture_transform;
if (textureTransform) {
const offset = textureTransform.offset || zeros;
const scale = textureTransform.scale || ones;
const rotation = textureTransform.rotation ? -textureTransform.rotation * math.RAD_TO_DEG : 0;
const tilingVec = new Vec2(scale[0], scale[1]);
const offsetVec = new Vec2(offset[0], 1 - scale[1] - offset[1]);
for (map = 0; map < maps.length; ++map) {
material[`${maps[map]}MapTiling`] = tilingVec;
material[`${maps[map]}MapOffset`] = offsetVec;
material[`${maps[map]}MapRotation`] = rotation;
}
}
};
export {
extractTextureTransform
};