summit/frontend/node_modules/three-stdlib/renderers/Projector.cjs.map

1 line
33 KiB
Plaintext
Raw Normal View History

2025-12-08 16:31:30 +00:00
{"version":3,"file":"Projector.cjs","sources":["../../src/renderers/Projector.js"],"sourcesContent":["import { Box3, Color, DoubleSide, Frustum, Matrix3, Matrix4, Vector2, Vector3, Vector4 } from 'three'\n\nclass RenderableObject {\n constructor() {\n this.id = 0\n\n this.object = null\n this.z = 0\n this.renderOrder = 0\n }\n}\n\n//\n\nclass RenderableFace {\n constructor() {\n this.id = 0\n\n this.v1 = new RenderableVertex()\n this.v2 = new RenderableVertex()\n this.v3 = new RenderableVertex()\n\n this.normalModel = new Vector3()\n\n this.vertexNormalsModel = [new Vector3(), new Vector3(), new Vector3()]\n this.vertexNormalsLength = 0\n\n this.color = new Color()\n this.material = null\n this.uvs = [new Vector2(), new Vector2(), new Vector2()]\n\n this.z = 0\n this.renderOrder = 0\n }\n}\n\n//\n\nclass RenderableVertex {\n constructor() {\n this.position = new Vector3()\n this.positionWorld = new Vector3()\n this.positionScreen = new Vector4()\n\n this.visible = true\n }\n\n copy(vertex) {\n this.positionWorld.copy(vertex.positionWorld)\n this.positionScreen.copy(vertex.positionScreen)\n }\n}\n\n//\n\nclass RenderableLine {\n constructor() {\n this.id = 0\n\n this.v1 = new RenderableVertex()\n this.v2 = new RenderableVertex()\n\n this.vertexColors = [new Color(), new Color()]\n this.material = null\n\n this.z = 0\n this.renderOrder = 0\n }\n}\n\n//\n\nclass RenderableSprite {\n constructor() {\n this.id = 0\n\n this.object = null\n\n this.x = 0\n this.y = 0\n this.z = 0\n\n this.rotation = 0\n this.scale = new Vector2()\n\n this.material = null\n this.renderOrder = 0\n }\n}\n\n//\n\nclass Projector {\n constructor() {\n let _object,\n _objectCount,\n _objectPoolLength = 0,\n _vertex,\n _vertexCount,\n _vertexPoolLength = 0,\n _face,\n _faceCount,\n _facePoolLength = 0,\n _line,\n _lineCount,\n _linePoolLength = 0,\n _sprite,\n _spriteCount,\n _spritePoolLength = 0,\n _modelMatrix\n\n const _renderData = { objects: [], lights: [], elements: [] },\n _vector3 = new Vector3(),\n _vector4 = new Vector4(),\n _clipBox = new Box3(new Vector3(-1, -1, -1), new Vector3(1, 1, 1)),\n _boundingBox = new Box3(),\n _points3 = new Array(3),\n _viewMatrix = new Matrix4(),\n _viewProjectionMatrix = new Matrix4(),\n _modelViewProjectionMatrix = new Matrix4(),\n _frustum = new Frustum(),\n _objectPool = [],\n _vertexPool = [],\n _facePool = [],\n _linePool = [],\n _spritePool = []\n\n //\n\n function RenderList() {\n const normals = []\n const colors = []\n const uvs = []\n\n let object = null\n\n const normalMatrix = new Matrix3()\n\n function setObject(value) {\n object = value\n\n normalMatrix.getNormalMatrix(object.matrixWorld)\n\n normals.length = 0\n colors.length = 0\n uvs.length = 0\n }\n\n function projectVertex(vertex) {\n const position = vertex.position\n const positionWorld = vertex.positionWorld\n const positionScreen = vertex.positionScreen\n\n positionWorld.copy(position).applyMatrix4(_modelMatrix)\n positionScreen.copy(positionWorld).applyMatrix4(_viewProjectionMatrix)\n\n const invW = 1 / positionScreen.w\n\n positionScreen.x *= invW\n positionScreen.y *= invW\n positionScreen.z *= invW\n\n vertex.visible =\n positionScreen.x >= -1 &&\n positionScreen.x <= 1 &&\n positionScreen.y >= -1 &&\n positionScreen.y <= 1 &&\n positionScreen.z >= -1 &&\n positionScreen.z <= 1\n }\n\n function pushVertex(x, y, z) {\n _vertex = getNextVertexInPool()\n _vertex.position.set(x, y, z)\n\n projectVertex(_vertex)\n }\n\n function pushNormal(x, y, z) {\n normals.push(x, y, z)\n }\n\n function pushColor(r, g,