{"_id":"@aperture-engine/render","_rev":"3-55e5f7cd5904f67087075c10fef27cf9","name":"@aperture-engine/render","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@aperture-engine/render","version":"0.1.0","keywords":["aperture","ecs","webgpu","game-engine","typescript","rendering","gltf"],"author":{"name":"Felix Zhang"},"license":"MIT","_id":"@aperture-engine/render@0.1.0","maintainers":[{"name":"felixtrz","email":"felixtrz96@gmail.com"}],"homepage":"https://github.com/felixtrz/aperture/tree/main/packages/render#readme","bugs":{"url":"https://github.com/felixtrz/aperture/issues"},"dist":{"shasum":"bf6c47899dd0c298996b1e25c85e8f97bafbaafc","tarball":"https://registry.npmjs.org/@aperture-engine/render/-/render-0.1.0.tgz","fileCount":1651,"integrity":"sha512-CbZcCHX3G/brN0axKrE4k4gzAPbdwkCfQCSRbnPLchGxHzDydmGA4QhSpbL6srgrbw/IVZlhiCaK7UGIWlrfpQ==","signatures":[{"sig":"MEQCIF3rFZsOSxtp2a/5trpGZ/6w6gl3leDfq+J5biPDSg1hAiAXAz3j/gpCySw+sk77q+2f91Xv1jBfU0ItqcSE12XIHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5009340},"main":"./dist/index.js","type":"module","_from":"file:aperture-engine-render-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./test-support":{"types":"./dist/test-support.d.ts","import":"./dist/test-support.js"}},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"felixtrz","email":"felixtrz96@gmail.com"},"_resolved":"/private/var/folders/xc/nttyc9pj3xngmbjsfbgdbddc0000gn/T/efa040a70df4464cd2c6050bcf78857b/aperture-engine-render-0.1.0.tgz","_integrity":"sha512-CbZcCHX3G/brN0axKrE4k4gzAPbdwkCfQCSRbnPLchGxHzDydmGA4QhSpbL6srgrbw/IVZlhiCaK7UGIWlrfpQ==","repository":{"url":"git+https://github.com/felixtrz/aperture.git","type":"git","directory":"packages/render"},"_npmVersion":"11.12.1","description":"Renderer-independent ECS authoring, assets, extraction, snapshots, and render-world contracts for Aperture.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"@aperture-engine/simulation":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/render_0.1.0_1782151622504_0.29747509848959","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aperture-engine/render","version":"0.2.0","keywords":["aperture","ecs","webgpu","game-engine","typescript","rendering","gltf"],"author":{"name":"Felix Zhang"},"license":"MIT","_id":"@aperture-engine/render@0.2.0","maintainers":[{"name":"felixtrz","email":"felixtrz96@gmail.com"}],"homepage":"https://github.com/felixtrz/aperture/tree/main/packages/render#readme","bugs":{"url":"https://github.com/felixtrz/aperture/issues"},"dist":{"shasum":"c25f6774f44c9e5914eddd6a8e45aa768323da1b","tarball":"https://registry.npmjs.org/@aperture-engine/render/-/render-0.2.0.tgz","fileCount":1651,"integrity":"sha512-ljMQH6GDwTPCiURc2Dgy00niEivQRyXgKTTO3WAPaIsU+Wex6AKPPEDikFla6Km5oSGgQakLi5wYWlBTfPvGfA==","signatures":[{"sig":"MEQCIAD/0JpOzbhNreyEuXyjshBVSK4Bp8tE2pzavoClfQlCAiAYBx67P15wPdAvlP0f+weM+lq+JPKwEHSaQRkuTKdxQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5009340},"main":"./dist/index.js","type":"module","_from":"file:aperture-engine-render-0.2.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./test-support":{"types":"./dist/test-support.d.ts","import":"./dist/test-support.js"}},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"felixtrz","email":"felixtrz96@gmail.com"},"_resolved":"/private/var/folders/xc/nttyc9pj3xngmbjsfbgdbddc0000gn/T/dd9f14a980323be53be68dce8e03a672/aperture-engine-render-0.2.0.tgz","_integrity":"sha512-ljMQH6GDwTPCiURc2Dgy00niEivQRyXgKTTO3WAPaIsU+Wex6AKPPEDikFla6Km5oSGgQakLi5wYWlBTfPvGfA==","repository":{"url":"git+https://github.com/felixtrz/aperture.git","type":"git","directory":"packages/render"},"_npmVersion":"11.12.1","description":"Renderer-independent ECS authoring, assets, extraction, snapshots, and render-world contracts for Aperture.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"@aperture-engine/simulation":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/render_0.2.0_1782246153623_0.4144776298888302","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aperture-engine/render","version":"0.3.0","description":"Renderer-independent ECS authoring, assets, extraction, snapshots, and render-world contracts for Aperture.","author":{"name":"Felix Zhang"},"repository":{"type":"git","url":"git+https://github.com/felixtrz/aperture.git","directory":"packages/render"},"homepage":"https://github.com/felixtrz/aperture/tree/main/packages/render#readme","bugs":{"url":"https://github.com/felixtrz/aperture/issues"},"keywords":["aperture","ecs","webgpu","game-engine","typescript","rendering","gltf"],"type":"module","license":"MIT","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./test-support":{"types":"./dist/test-support.d.ts","import":"./dist/test-support.js"},"./package.json":"./package.json"},"main":"./dist/index.js","types":"./dist/index.d.ts","publishConfig":{"access":"public"},"dependencies":{"@aperture-engine/particles":"^0.3.0","@aperture-engine/simulation":"^0.3.0"},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json"},"_id":"@aperture-engine/render@0.3.0","_integrity":"sha512-JExd1qKQUXDTQaSEU4pQK6WMpPW/Mki7P2qsE3BdS9jMWqrnQpvpPyTtmGWE/BvfJczUnXJiNLTWDxbiDHOJhw==","_resolved":"/private/var/folders/xc/nttyc9pj3xngmbjsfbgdbddc0000gn/T/437c3a67b9044b2b09729f10d73ffaec/aperture-engine-render-0.3.0.tgz","_from":"file:aperture-engine-render-0.3.0.tgz","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-JExd1qKQUXDTQaSEU4pQK6WMpPW/Mki7P2qsE3BdS9jMWqrnQpvpPyTtmGWE/BvfJczUnXJiNLTWDxbiDHOJhw==","shasum":"08cdfd4e898a2c63c2b5580435a4f0990aaa45d4","tarball":"https://registry.npmjs.org/@aperture-engine/render/-/render-0.3.0.tgz","fileCount":1655,"unpackedSize":5017957,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFZLHxiQbbYA++4qEhVimt5fTSez864hEvjuauItYgxRAiEA/Pji0dyJHq71kEh0Hh/yusWD9Aj0TtCmiwIiEk4GTYs="}]},"_npmUser":{"name":"felixtrz","email":"felixtrz96@gmail.com"},"directories":{},"maintainers":[{"name":"felixtrz","email":"felixtrz96@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/render_0.3.0_1783122755459_0.6416413365439229"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-22T18:07:02.311Z","modified":"2026-07-03T23:52:35.777Z","0.1.0":"2026-06-22T18:07:02.725Z","0.2.0":"2026-06-23T20:22:33.788Z","0.3.0":"2026-07-03T23:52:35.650Z"},"bugs":{"url":"https://github.com/felixtrz/aperture/issues"},"author":{"name":"Felix Zhang"},"license":"MIT","homepage":"https://github.com/felixtrz/aperture/tree/main/packages/render#readme","keywords":["aperture","ecs","webgpu","game-engine","typescript","rendering","gltf"],"repository":{"type":"git","url":"git+https://github.com/felixtrz/aperture.git","directory":"packages/render"},"description":"Renderer-independent ECS authoring, assets, extraction, snapshots, and render-world contracts for Aperture.","maintainers":[{"name":"felixtrz","email":"felixtrz96@gmail.com"}],"readme":"# @aperture-engine/render\n\nRenderer-independent ECS authoring, assets, extraction, and the per-frame `RenderSnapshot` contract for the Aperture engine.\n\n## Install\n\n```sh\npnpm add @aperture-engine/render\n```\n\nThis package is part of the [Aperture](https://github.com/felixtrz/aperture) WebGPU game engine and is normally used alongside the other `@aperture-engine/*` packages (it depends on `@aperture-engine/simulation` for the ECS world and asset registry).\n\n## What it does\n\n`@aperture-engine/render` defines the authoring side of Aperture's render pipeline without depending on any specific GPU backend. You attach plain ECS components (`Mesh`, `Material`, `Camera`, `Light`, `Sprite`, UI nodes, particle emitters, audio emitters, and more) to entities, then extract a backend-agnostic `RenderSnapshot` for the frame. A separate renderer package consumes that snapshot to issue WebGPU work. The package also bundles glTF/GLB asset loading, KTX2/Draco/Meshopt/HDR decoders, material and mesh contracts, MSDF text atlases, and snapshot encoding/diagnostics.\n\n## Usage\n\n```ts\nimport { createWorld, AssetRegistry } from \"@aperture-engine/simulation\";\nimport {\n  registerRenderAuthoringComponents,\n  extractRenderSnapshot,\n  Camera,\n  Mesh,\n  Material,\n  createCamera,\n} from \"@aperture-engine/render\";\n\nconst world = createWorld();\nconst assets = new AssetRegistry();\n\n// Register the render authoring components on the world.\nregisterRenderAuthoringComponents(world);\n\n// Author a camera and a mesh entity.\nworld.createEntity().addComponent(Camera, createCamera());\nworld\n  .createEntity()\n  .addComponent(Mesh, { meshId: \"my-mesh\" })\n  .addComponent(Material, { materialId: \"my-material\" });\n\n// Produce the per-frame RenderSnapshot a renderer can consume.\nconst snapshot = extractRenderSnapshot(world, assets, { frame: 0 });\n```\n\n## Entry points\n\nThis package exposes the following subpaths in its `exports` map:\n\n- `@aperture-engine/render` — the full public API (assets, materials, mesh, rendering, text).\n- `@aperture-engine/render/test-support` — extra helpers for inspecting snapshots, prepared resources, and the material queue in tests.\n\n## License\n\nPart of the [Aperture monorepo](https://github.com/felixtrz/aperture). MIT licensed.\n","readmeFilename":"README.md"}