diff --git a/docs/api-reference/README.md b/docs/developer-guide/README.md similarity index 100% rename from docs/api-reference/README.md rename to docs/developer-guide/README.md diff --git a/docs/contributor-guide/README.md b/docs/developer-guide/contributing.md similarity index 93% rename from docs/contributor-guide/README.md rename to docs/developer-guide/contributing.md index 0bae2a25f2..8b465bf49e 100644 --- a/docs/contributor-guide/README.md +++ b/docs/developer-guide/contributing.md @@ -1,4 +1,8 @@ -# Development Environment +# Contributing + +In order to contribute to luma.gl you need to be able to build and test luma.gl itself. + +## Development Environment To get started developing luma.gl, first make sure to install all dependancies from the repository root: diff --git a/docs/table-of-contents.json b/docs/table-of-contents.json index 68d10c60c5..723d342485 100644 --- a/docs/table-of-contents.json +++ b/docs/table-of-contents.json @@ -10,118 +10,108 @@ ] }, { - "title": "Tutorials", + "title": "Developer Guide", "entries": [ - { "entry": "docs/getting-started" }, - { "entry": "docs/getting-started/hello-triangle" }, - { "entry": "docs/getting-started/high-medium-low" }, - { "entry": "docs/getting-started/hello-instancing-high" }, - { "entry": "docs/getting-started/hello-instancing-mid" }, - { "entry": "docs/getting-started/hello-instancing-low" }, - { "entry": "docs/getting-started/shader-modules" }, - { "entry": "docs/getting-started/shader-hooks" }, - { "entry": "docs/getting-started/shader-modules-low" }, - { "entry": "docs/getting-started/transform-feedback" }, - { "entry": "docs/getting-started/external-context" }, - { "entry": "docs/getting-started/hello-cube" }, - { "entry": "docs/getting-started/lighting" }, - { "entry": "docs/getting-started/instanced-transform" }, - { "entry": "docs/getting-started/whats-next" } + { "entry": "docs/developer-guide" }, + { "entry": "docs/developer-guide/accessors" }, + { "entry": "docs/developer-guide/transform-feedback" }, + { "entry": "docs/developer-guide/shader-modules" }, + { "entry": "docs/developer-guide/debugging" }, + { "entry": "docs/developer-guide/bundling" }, + { "entry": "docs/developer-guide/contributing" } ] }, { "title": "API Reference", "chapters": [ { - "title": "Overview", - "entries": [ - { "entry": "docs/api-reference" } - ] - }, - { - "title": "Engine", + "title": "@luma.gl/engine", "entries": [ - { "entry": "docs/api-reference/engine/model" }, - { "entry": "docs/api-reference/engine/animation-loop" }, - { "entry": "docs/api-reference/engine/transform" }, - { "entry": "docs/api-reference/engine/geometry" }, - { "entry": "docs/api-reference/engine/geometries" }, - { "entry": "docs/api-reference/engine/program-manager" }, - { "entry": "docs/api-reference/engine/animation/timeline" }, - { "entry": "docs/api-reference/engine/animation/key-frames" } + { "entry": "modules/engine/docs/api-reference/model" }, + { "entry": "modules/engine/docs/api-reference/animation-loop" }, + { "entry": "modules/engine/docs/api-reference/transform" }, + { "entry": "modules/engine/docs/api-reference/geometry" }, + { "entry": "modules/engine/docs/api-reference/geometries" }, + { "entry": "modules/engine/docs/api-reference/program-manager" }, + { "entry": "modules/engine/docs/api-reference/animation/timeline" }, + { "entry": "modules/engine/docs/api-reference/animation/key-frames" } ] }, { - "title": "WebGL", + "title": "@luma.gl/webgl", "entries": [ - { "entry": "docs/api-reference/webgl/accessor" }, - { "entry": "docs/api-reference/webgl/buffer" }, - { "entry": "docs/api-reference/webgl/framebuffer" }, - { "entry": "docs/api-reference/webgl/program" }, - { "entry": "docs/api-reference/webgl/query" }, - { "entry": "docs/api-reference/webgl/renderbuffer" }, - { "entry": "docs/api-reference/webgl/shader" }, - { "entry": "docs/api-reference/webgl/texture" }, - { "entry": "docs/api-reference/webgl/texture-2d" }, - { "entry": "docs/api-reference/webgl/texture-3d" }, - { "entry": "docs/api-reference/webgl/texture-cube" }, - { "entry": "docs/api-reference/webgl/transform-feedback" }, - { "entry": "docs/api-reference/webgl/uniform-buffer-layout" }, - { "entry": "docs/api-reference/webgl/vertex-array" }, - { "entry": "docs/api-reference/webgl/vertex-array-object" }, - { "entry": "docs/api-reference/webgl/resource" }, - { "entry": "docs/api-reference/webgl/context/feature-checking" }, - { "entry": "docs/api-reference/webgl/context/context-properties" }, - { "entry": "docs/api-reference/webgl/moving-data" } + { "entry": "modules/webgl/docs/api-reference/accessor" }, + { "entry": "modules/webgl/docs/api-reference/buffer" }, + { "entry": "modules/webgl/docs/api-reference/framebuffer" }, + { "entry": "modules/webgl/docs/api-reference/program" }, + { "entry": "modules/webgl/docs/api-reference/query" }, + { "entry": "modules/webgl/docs/api-reference/renderbuffer" }, + { "entry": "modules/webgl/docs/api-reference/shader" }, + { "entry": "modules/webgl/docs/api-reference/texture" }, + { "entry": "modules/webgl/docs/api-reference/texture-2d" }, + { "entry": "modules/webgl/docs/api-reference/texture-3d" }, + { "entry": "modules/webgl/docs/api-reference/texture-cube" }, + { "entry": "modules/webgl/docs/api-reference/transform-feedback" }, + { "entry": "modules/webgl/docs/api-reference/uniform-buffer-layout" }, + { "entry": "modules/webgl/docs/api-reference/vertex-array" }, + { "entry": "modules/webgl/docs/api-reference/vertex-array-object" }, + { "entry": "modules/webgl/docs/api-reference/resource" }, + { "entry": "modules/webgl/docs/api-reference/context/feature-checking" }, + { "entry": "modules/webgl/docs/api-reference/context/context-properties" }, + { "entry": "modules/webgl/docs/api-reference/moving-data" } ] }, { - "title": "GLTools", + "title": "@luma.gl/gltools", "entries": [ - { "entry": "docs/api-reference/gltools/context" }, - { "entry": "docs/api-reference/gltools/parameter-setting" }, - { "entry": "docs/api-reference/gltools/device-pixels" } + { "entry": "modules/gltools/docs/api-reference/context" }, + { "entry": "modules/gltools/docs/api-reference/parameter-setting" }, + { "entry": "modules/gltools/docs/api-reference/device-pixels" } ] }, { - "title": "Shadertools", + "title": "@luma.gl/shadertools", "entries": [ - { "entry": "docs/api-reference/shadertools/assemble-shaders" }, - { "entry": "docs/api-reference/shadertools/core-shader-modules" }, - { "entry": "docs/api-reference/shadertools/effects-shader-modules" } + { "entry": "modules/shadertools/docs/api-reference/assemble-shaders" }, + { "entry": "modules/shadertools/docs/api-reference/core-shader-modules" }, + { "entry": "modules/shadertools/docs/api-reference/effects-shader-modules" } ] }, { - "title": "Debug", + "title": "@luma.gl/experimental", "entries": [ - { "entry": "docs/api-reference/debug" } + { "entry": "modules/experimental/docs/api-reference/warning" }, + { "entry": "modules/experimental/docs/api-reference/scenegraph/scenegraph-node" }, + { "entry": "modules/experimental/docs/api-reference/scenegraph/model-node" }, + { "entry": "modules/experimental/docs/api-reference/scenegraph/group-node" } ] }, { - "title": "Experimental", + "title": "@luma.gl/debug", "entries": [ - { "entry": "docs/api-reference/experimental/warning" }, - { "entry": "docs/api-reference/experimental/scenegraph/scenegraph-node" }, - { "entry": "docs/api-reference/experimental/scenegraph/model-node" }, - { "entry": "docs/api-reference/experimental/scenegraph/group-node" } + { "entry": "modules/debug/docs" } ] } ] }, { - "title": "Developer Guide", - "entries": [ - { "entry": "docs/developer-guide/accessors" }, - { "entry": "docs/developer-guide/transform-feedback" }, - { "entry": "docs/developer-guide/shader-modules" }, - { "entry": "docs/developer-guide/debugging" }, - { "entry": "docs/developer-guide/bundling" } - ] - }, - { - "title": "Contributor Guide", + "title": "Tutorials", "entries": [ - { "entry": "docs/contributor-guide" } + { "entry": "docs/getting-started" }, + { "entry": "docs/getting-started/hello-triangle" }, + { "entry": "docs/getting-started/high-medium-low" }, + { "entry": "docs/getting-started/hello-instancing-high" }, + { "entry": "docs/getting-started/hello-instancing-mid" }, + { "entry": "docs/getting-started/hello-instancing-low" }, + { "entry": "docs/getting-started/shader-modules" }, + { "entry": "docs/getting-started/shader-hooks" }, + { "entry": "docs/getting-started/shader-modules-low" }, + { "entry": "docs/getting-started/transform-feedback" }, + { "entry": "docs/getting-started/external-context" }, + { "entry": "docs/getting-started/hello-cube" }, + { "entry": "docs/getting-started/lighting" }, + { "entry": "docs/getting-started/instanced-transform" }, + { "entry": "docs/getting-started/whats-next" } ] } ] diff --git a/docs/api-reference/debug.md b/modules/debug/docs/README.md similarity index 100% rename from docs/api-reference/debug.md rename to modules/debug/docs/README.md diff --git a/docs/api-reference/engine/animation-loop.md b/modules/engine/docs/api-reference/animation-loop.md similarity index 100% rename from docs/api-reference/engine/animation-loop.md rename to modules/engine/docs/api-reference/animation-loop.md diff --git a/docs/api-reference/engine/animation/key-frames.md b/modules/engine/docs/api-reference/animation/key-frames.md similarity index 100% rename from docs/api-reference/engine/animation/key-frames.md rename to modules/engine/docs/api-reference/animation/key-frames.md diff --git a/docs/api-reference/engine/animation/timeline.md b/modules/engine/docs/api-reference/animation/timeline.md similarity index 100% rename from docs/api-reference/engine/animation/timeline.md rename to modules/engine/docs/api-reference/animation/timeline.md diff --git a/docs/api-reference/engine/geometries.md b/modules/engine/docs/api-reference/geometries.md similarity index 100% rename from docs/api-reference/engine/geometries.md rename to modules/engine/docs/api-reference/geometries.md diff --git a/docs/api-reference/engine/geometry.md b/modules/engine/docs/api-reference/geometry.md similarity index 100% rename from docs/api-reference/engine/geometry.md rename to modules/engine/docs/api-reference/geometry.md diff --git a/docs/api-reference/engine/model.md b/modules/engine/docs/api-reference/model.md similarity index 100% rename from docs/api-reference/engine/model.md rename to modules/engine/docs/api-reference/model.md diff --git a/docs/api-reference/engine/program-manager.md b/modules/engine/docs/api-reference/program-manager.md similarity index 100% rename from docs/api-reference/engine/program-manager.md rename to modules/engine/docs/api-reference/program-manager.md diff --git a/docs/api-reference/engine/transform.md b/modules/engine/docs/api-reference/transform.md similarity index 100% rename from docs/api-reference/engine/transform.md rename to modules/engine/docs/api-reference/transform.md diff --git a/docs/api-reference/engine/transform/buffer-transform.md b/modules/engine/docs/api-reference/transform/buffer-transform.md similarity index 100% rename from docs/api-reference/engine/transform/buffer-transform.md rename to modules/engine/docs/api-reference/transform/buffer-transform.md diff --git a/docs/api-reference/engine/transform/texture-transform.md b/modules/engine/docs/api-reference/transform/texture-transform.md similarity index 100% rename from docs/api-reference/engine/transform/texture-transform.md rename to modules/engine/docs/api-reference/transform/texture-transform.md diff --git a/docs/api-reference/experimental/scenegraph/group-node.md b/modules/experimental/docs/api-reference/scenegraph/group-node.md similarity index 100% rename from docs/api-reference/experimental/scenegraph/group-node.md rename to modules/experimental/docs/api-reference/scenegraph/group-node.md diff --git a/docs/api-reference/experimental/scenegraph/model-node.md b/modules/experimental/docs/api-reference/scenegraph/model-node.md similarity index 100% rename from docs/api-reference/experimental/scenegraph/model-node.md rename to modules/experimental/docs/api-reference/scenegraph/model-node.md diff --git a/docs/api-reference/experimental/scenegraph/scenegraph-node.md b/modules/experimental/docs/api-reference/scenegraph/scenegraph-node.md similarity index 100% rename from docs/api-reference/experimental/scenegraph/scenegraph-node.md rename to modules/experimental/docs/api-reference/scenegraph/scenegraph-node.md diff --git a/docs/api-reference/experimental/warning.md b/modules/experimental/docs/api-reference/warning.md similarity index 100% rename from docs/api-reference/experimental/warning.md rename to modules/experimental/docs/api-reference/warning.md diff --git a/docs/api-reference/gltools/context.md b/modules/gltools/docs/api-reference/context.md similarity index 100% rename from docs/api-reference/gltools/context.md rename to modules/gltools/docs/api-reference/context.md diff --git a/docs/api-reference/gltools/device-pixels.md b/modules/gltools/docs/api-reference/device-pixels.md similarity index 100% rename from docs/api-reference/gltools/device-pixels.md rename to modules/gltools/docs/api-reference/device-pixels.md diff --git a/docs/api-reference/gltools/parameter-setting.md b/modules/gltools/docs/api-reference/parameter-setting.md similarity index 100% rename from docs/api-reference/gltools/parameter-setting.md rename to modules/gltools/docs/api-reference/parameter-setting.md diff --git a/docs/api-reference/shadertools/assemble-shaders.md b/modules/shadertools/docs/api-reference/assemble-shaders.md similarity index 100% rename from docs/api-reference/shadertools/assemble-shaders.md rename to modules/shadertools/docs/api-reference/assemble-shaders.md diff --git a/docs/api-reference/shadertools/core-shader-modules.md b/modules/shadertools/docs/api-reference/core-shader-modules.md similarity index 100% rename from docs/api-reference/shadertools/core-shader-modules.md rename to modules/shadertools/docs/api-reference/core-shader-modules.md diff --git a/docs/api-reference/shadertools/effects-shader-modules.md b/modules/shadertools/docs/api-reference/effects-shader-modules.md similarity index 100% rename from docs/api-reference/shadertools/effects-shader-modules.md rename to modules/shadertools/docs/api-reference/effects-shader-modules.md diff --git a/docs/api-reference/test-utils/snapshot-test-runner.md b/modules/test-utils/docs/api-reference/snapshot-test-runner.md similarity index 100% rename from docs/api-reference/test-utils/snapshot-test-runner.md rename to modules/test-utils/docs/api-reference/snapshot-test-runner.md diff --git a/docs/api-reference/webgl/accessor.md b/modules/webgl/docs/api-reference/accessor.md similarity index 100% rename from docs/api-reference/webgl/accessor.md rename to modules/webgl/docs/api-reference/accessor.md diff --git a/docs/api-reference/webgl/buffer.md b/modules/webgl/docs/api-reference/buffer.md similarity index 100% rename from docs/api-reference/webgl/buffer.md rename to modules/webgl/docs/api-reference/buffer.md diff --git a/docs/api-reference/webgl/context/context-properties.md b/modules/webgl/docs/api-reference/context/context-properties.md similarity index 100% rename from docs/api-reference/webgl/context/context-properties.md rename to modules/webgl/docs/api-reference/context/context-properties.md diff --git a/docs/api-reference/webgl/context/feature-checking.md b/modules/webgl/docs/api-reference/context/feature-checking.md similarity index 100% rename from docs/api-reference/webgl/context/feature-checking.md rename to modules/webgl/docs/api-reference/context/feature-checking.md diff --git a/docs/api-reference/webgl/framebuffer.md b/modules/webgl/docs/api-reference/framebuffer.md similarity index 100% rename from docs/api-reference/webgl/framebuffer.md rename to modules/webgl/docs/api-reference/framebuffer.md diff --git a/docs/api-reference/webgl/moving-data.md b/modules/webgl/docs/api-reference/moving-data.md similarity index 100% rename from docs/api-reference/webgl/moving-data.md rename to modules/webgl/docs/api-reference/moving-data.md diff --git a/docs/api-reference/webgl/program.md b/modules/webgl/docs/api-reference/program.md similarity index 100% rename from docs/api-reference/webgl/program.md rename to modules/webgl/docs/api-reference/program.md diff --git a/docs/api-reference/webgl/query.md b/modules/webgl/docs/api-reference/query.md similarity index 100% rename from docs/api-reference/webgl/query.md rename to modules/webgl/docs/api-reference/query.md diff --git a/docs/api-reference/webgl/renderbuffer.md b/modules/webgl/docs/api-reference/renderbuffer.md similarity index 100% rename from docs/api-reference/webgl/renderbuffer.md rename to modules/webgl/docs/api-reference/renderbuffer.md diff --git a/docs/api-reference/webgl/resource.md b/modules/webgl/docs/api-reference/resource.md similarity index 100% rename from docs/api-reference/webgl/resource.md rename to modules/webgl/docs/api-reference/resource.md diff --git a/docs/api-reference/webgl/shader.md b/modules/webgl/docs/api-reference/shader.md similarity index 100% rename from docs/api-reference/webgl/shader.md rename to modules/webgl/docs/api-reference/shader.md diff --git a/docs/api-reference/webgl/texture-2d.md b/modules/webgl/docs/api-reference/texture-2d.md similarity index 100% rename from docs/api-reference/webgl/texture-2d.md rename to modules/webgl/docs/api-reference/texture-2d.md diff --git a/docs/api-reference/webgl/texture-3d.md b/modules/webgl/docs/api-reference/texture-3d.md similarity index 100% rename from docs/api-reference/webgl/texture-3d.md rename to modules/webgl/docs/api-reference/texture-3d.md diff --git a/docs/api-reference/webgl/texture-cube.md b/modules/webgl/docs/api-reference/texture-cube.md similarity index 100% rename from docs/api-reference/webgl/texture-cube.md rename to modules/webgl/docs/api-reference/texture-cube.md diff --git a/docs/api-reference/webgl/texture.md b/modules/webgl/docs/api-reference/texture.md similarity index 100% rename from docs/api-reference/webgl/texture.md rename to modules/webgl/docs/api-reference/texture.md diff --git a/docs/api-reference/webgl/transform-feedback.md b/modules/webgl/docs/api-reference/transform-feedback.md similarity index 100% rename from docs/api-reference/webgl/transform-feedback.md rename to modules/webgl/docs/api-reference/transform-feedback.md diff --git a/docs/api-reference/webgl/uniform-buffer-layout.md b/modules/webgl/docs/api-reference/uniform-buffer-layout.md similarity index 100% rename from docs/api-reference/webgl/uniform-buffer-layout.md rename to modules/webgl/docs/api-reference/uniform-buffer-layout.md diff --git a/docs/api-reference/webgl/vertex-array-object.md b/modules/webgl/docs/api-reference/vertex-array-object.md similarity index 100% rename from docs/api-reference/webgl/vertex-array-object.md rename to modules/webgl/docs/api-reference/vertex-array-object.md diff --git a/docs/api-reference/webgl/vertex-array.md b/modules/webgl/docs/api-reference/vertex-array.md similarity index 100% rename from docs/api-reference/webgl/vertex-array.md rename to modules/webgl/docs/api-reference/vertex-array.md diff --git a/website/gatsby-config.js b/website/gatsby-config.js index a90cd2a979..839e77d0d8 100644 --- a/website/gatsby-config.js +++ b/website/gatsby-config.js @@ -88,48 +88,56 @@ module.exports = { EXAMPLES: [ { + category: 'Showcases', title: 'Instancing', componentUrl: resolve(__dirname, './templates/showcase/example-instancing.jsx'), path: 'examples/showcase/instancing/', image: 'images/example-instancing.jpg' }, { - title: 'Geospatial', - componentUrl: resolve(__dirname, './templates/showcase/example-geospatial.jsx'), - path: 'examples/showcase/geospatial/', - image: 'images/example-geospatial.jpg' - }, - { + category: 'Showcases', title: 'Persistence', componentUrl: resolve(__dirname, './templates/showcase/example-persistence.jsx'), path: 'examples/showcase/persistence/', image: 'images/example-persistence.jpg' }, { - title: 'Wandering', - componentUrl: resolve(__dirname, './templates/showcase/example-wandering.jsx'), - path: 'examples/showcase/wandering/', - image: 'images/example-wandering.png' + category: 'Showcases', + title: 'GLTF', + componentUrl: resolve(__dirname, './templates/showcase/example-gltf.jsx'), + path: 'examples/showcase/gltf/', + image: 'images/example-gltf.jpg' }, { + category: 'Showcases', title: 'DOF', componentUrl: resolve(__dirname, './templates/showcase/example-dof.jsx'), path: 'examples/showcase/dof/', image: 'images/example-dof.jpg' }, { - title: 'GLTF', - componentUrl: resolve(__dirname, './templates/showcase/example-gltf.jsx'), - path: 'examples/showcase/gltf/', - image: 'images/example-gltf.jpg' + category: 'Showcases', + title: 'Geospatial', + componentUrl: resolve(__dirname, './templates/showcase/example-geospatial.jsx'), + path: 'examples/showcase/geospatial/', + image: 'images/example-geospatial.jpg' + }, + { + category: 'Showcases', + title: 'Wandering', + componentUrl: resolve(__dirname, './templates/showcase/example-wandering.jsx'), + path: 'examples/showcase/wandering/', + image: 'images/example-wandering.png' }, { + category: 'Tutorials', title: 'Hello Triangle', componentUrl: resolve(__dirname, './templates/getting-started/example-hello-triangle.jsx'), path: 'examples/getting-started/hello-triangle', image: 'images/example-hello-triangle.png' }, { + category: 'Tutorials', title: 'Hello Instancing - High-level', componentUrl: resolve( __dirname, @@ -139,6 +147,7 @@ module.exports = { image: 'images/example-hello-instancing.png' }, { + category: 'Tutorials', title: 'Hello Instancing - Mid-level', componentUrl: resolve( __dirname, @@ -148,6 +157,7 @@ module.exports = { image: 'images/example-hello-instancing.png' }, { + category: 'Tutorials', title: 'Hello Instancing - Low-level', componentUrl: resolve( __dirname, @@ -157,18 +167,21 @@ module.exports = { image: 'images/example-hello-instancing.png' }, { + category: 'Tutorials', title: 'Shader Modules', componentUrl: resolve(__dirname, './templates/getting-started/example-shader-modules.jsx'), path: 'examples/getting-started/shader-modules', image: 'images/example-shader-modules.png' }, { + category: 'Tutorials', title: 'Shader Hooks', componentUrl: resolve(__dirname, './templates/getting-started/example-shader-hooks.jsx'), path: 'examples/getting-started/shader-hooks', image: 'images/example-shader-hooks.jpg' }, { + category: 'Tutorials', title: 'Shader Modules - Low-level', componentUrl: resolve( __dirname, @@ -178,6 +191,7 @@ module.exports = { image: 'images/example-shader-hooks.jpg' }, { + category: 'Tutorials', title: 'Transform Feedback', componentUrl: resolve( __dirname, @@ -187,24 +201,28 @@ module.exports = { image: 'images/example-transform-feedback.jpg' }, { + category: 'Tutorials', title: 'External Context', componentUrl: resolve(__dirname, './templates/getting-started/example-external-context.jsx'), path: 'examples/getting-started/external-context', image: 'images/example-hello-triangle.png' }, { + category: 'Tutorials', title: 'Hello Cube', componentUrl: resolve(__dirname, './templates/getting-started/example-hello-cube.jsx'), path: 'examples/getting-started/hello-cube/', image: 'images/example-hello-cube.jpg' }, { + category: 'Tutorials', title: 'Lighting', componentUrl: resolve(__dirname, './templates/getting-started/example-lighting.jsx'), path: 'examples/getting-started/lighting/', image: 'images/example-lighting.jpg' }, { + category: 'Tutorials', title: 'Instanced Transform', componentUrl: resolve( __dirname, @@ -214,30 +232,35 @@ module.exports = { image: 'images/example-instanced-transform.jpg' }, { + category: 'Tutorials', title: 'Animation', componentUrl: resolve(__dirname, './templates/api/example-animation.jsx'), path: 'examples/api/animation/', image: 'images/example-animation.png' }, { + category: 'Tutorials', title: 'Program Management', componentUrl: resolve(__dirname, './templates/api/example-program-management.jsx'), path: 'examples/api/program-management/', image: 'images/example-program-management.png' }, { + category: 'Tutorials', title: 'Cubemap', componentUrl: resolve(__dirname, './templates/api/example-cubemap.jsx'), path: 'examples/api/cubemap/', image: 'images/example-cubemap.jpg' }, { + category: 'Tutorials', title: 'Texture3D', componentUrl: resolve(__dirname, './templates/api/example-texture-3d.jsx'), path: 'examples/api/texture3d/', image: 'images/example-texture3d.png' }, { + category: 'Performance', title: 'Stress Test', componentUrl: resolve(__dirname, './templates/performance/example-stress-test.jsx'), path: 'examples/performance/stress-test/',