UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

29 lines (20 loc) 975 B
import { BufferAttribute } from "three"; import { genTangSpace, SMikkTSpaceContext } from "./MikkTSpace.js"; /** * only works with indexed geometries * @param {THREE.BufferGeometry} geo */ export function buffer_geometry_generate_tangents(geo) { const attribute_position = geo.getAttribute('position'); if (geo.getAttribute('tangent') === undefined) { geo.setAttribute('tangent', new BufferAttribute(new Float32Array(attribute_position.count * 4), 4, false)); } const attribute_tangent = geo.getAttribute('tangent'); const ctx = new SMikkTSpaceContext(); ctx.geometry_buffer_index = geo.getIndex().array; ctx.geometry_buffer_vertex_position = attribute_position.array; ctx.geometry_buffer_vertex_normal = geo.getAttribute('normal').array; ctx.geometry_buffer_vertex_uv = geo.getAttribute('uv').array; ctx.geometry_buffer_vertex_tangent = attribute_tangent.array; genTangSpace(ctx); }