UNPKG

@babylonjs/viewer

Version:

The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.

54 lines (52 loc) 1.52 kB
const PBR2_OCCL_UV_SPLIT = 1 << 28; function writeOne(data, offsets, texName, tex) { const mOff = offsets.get(`${texName}UVm`); const tOff = offsets.get(`${texName}UVt`); if (mOff === void 0 || tOff === void 0) { return; } const mi = mOff / 4; const ti = tOff / 4; const sx = tex?.uScale ?? 1; const sy = tex?.vScale ?? 1; const ang = tex?.uAng ?? 0; const ox = tex?.uOffset ?? 0; const oy = tex?.vOffset ?? 0; if (ang === 0) { data[mi] = sx; data[mi + 1] = 0; data[mi + 2] = 0; data[mi + 3] = sy; } else { const c = Math.cos(ang); const s = Math.sin(ang); data[mi] = c * sx; data[mi + 1] = s * sy; data[mi + 2] = -s * sx; data[mi + 3] = c * sy; } data[ti] = ox; data[ti + 1] = oy; data[ti + 2] = 0; data[ti + 3] = 0; } const pbrExt = { id: "uv-transform", phase: "fragment", detect(mat) { const m = mat; const split = !!m.occlusionTexture && !m.occlusionTexCoord; return { f: 0, f2: split ? PBR2_OCCL_UV_SPLIT : 0 }; }, writeUbo(data, material, offsets) { const m = material; writeOne(data, offsets, "baseColor", m.baseColorTexture); writeOne(data, offsets, "normal", m.normalTexture); writeOne(data, offsets, "orm", m.ormTexture); writeOne(data, offsets, "emissive", m.emissiveTexture); writeOne(data, offsets, "specGloss", m.specGlossTexture); writeOne(data, offsets, "occl", m.occlusionTexture); } }; export { pbrExt }; //# sourceMappingURL=uv-transform-fragment-BUAeaIA1.esm.js.map