{
  "definitions": [
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/renderers/shader.renderer.ts",
          "name": "createShaderPass",
          "source": {
            "href": "https://banes-lab.com/anatomy/social-share#file-social-share-core-renderers-shader-renderer-ts",
            "json": "https://banes-lab.com/json/source/social-share/core/renderers/shader.renderer.ts",
            "label": "core/renderers/shader.renderer.ts",
            "markdown": "https://banes-lab.com/source/social-share/core/renderers/shader.renderer.ts.md",
            "ref": "anatomy:file-social-share-core-renderers-shader-renderer-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 21,
      "name": "uniformData",
      "signature": "const uniformData = function uniformData(frame: ShaderFrame): Float32Array<ArrayBuffer> {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/renderers/shader.renderer.ts",
          "name": "uniformData",
          "source": {
            "href": "https://banes-lab.com/anatomy/social-share#file-social-share-core-renderers-shader-renderer-ts",
            "json": "https://banes-lab.com/json/source/social-share/core/renderers/shader.renderer.ts",
            "label": "core/renderers/shader.renderer.ts",
            "markdown": "https://banes-lab.com/source/social-share/core/renderers/shader.renderer.ts.md",
            "ref": "anatomy:file-social-share-core-renderers-shader-renderer-ts"
          }
        }
      ],
      "callers": [],
      "exported": true,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 39,
      "name": "createShaderPass",
      "signature": "export const createShaderPass = async function createShaderPass("
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 6,
      "name": "HEADER_FLOATS",
      "signature": "const HEADER_FLOATS = 4;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 7,
      "name": "FLOAT_BYTES",
      "signature": "const FLOAT_BYTES = 4;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 8,
      "name": "VERTICES",
      "signature": "const VERTICES = 3;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 9,
      "name": "VERTEX_ENTRY",
      "signature": "const VERTEX_ENTRY = \"vertexMain\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 10,
      "name": "FRAGMENT_ENTRY",
      "signature": "const FRAGMENT_ENTRY = \"fragmentMain\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 11,
      "name": "CONTEXT_KIND",
      "signature": "const CONTEXT_KIND = \"webgpu\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 12,
      "name": "ERROR_KIND",
      "signature": "const ERROR_KIND = \"error\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 13,
      "name": "VALIDATION_SCOPE",
      "signature": "const VALIDATION_SCOPE = \"validation\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 14,
      "name": "MESSAGE_SEPARATOR",
      "signature": "const MESSAGE_SEPARATOR = \"; \";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 15,
      "name": "POSITION_SEPARATOR",
      "signature": "const POSITION_SEPARATOR = \":\";"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 17,
      "name": "describe",
      "signature": "const describe = function describe(message: GPUCompilationMessage): string {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 22,
      "name": "data",
      "signature": "const data = new Float32Array(HEADER_FLOATS + UNIFORM_SLOTS);"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 28,
      "name": "deviceOf",
      "signature": "const deviceOf = async function deviceOf(): Promise<GPUDevice> {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 32,
      "name": "adapter",
      "signature": "const adapter = await navigator.gpu.requestAdapter();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 43,
      "name": "device",
      "signature": "const device = await deviceOf();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 44,
      "name": "context",
      "signature": "const context = canvas.getContext(CONTEXT_KIND);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 48,
      "name": "format",
      "signature": "const format = navigator.gpu.getPreferredCanvasFormat();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 50,
      "name": "module",
      "signature": "const module = device.createShaderModule({ code: prelude + source });"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 51,
      "name": "compiled",
      "signature": "const compiled = await module.getCompilationInfo();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 52,
      "name": "errors",
      "signature": "const errors = compiled.messages.filter((message) => message.type === ERROR_KIND);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 57,
      "name": "pipeline",
      "signature": "const pipeline = device.createRenderPipeline({"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 63,
      "name": "failed",
      "signature": "const failed = await device.popErrorScope();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 67,
      "name": "buffer",
      "signature": "const buffer = device.createBuffer({"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 71,
      "name": "bindings",
      "signature": "const bindings = device.createBindGroup({"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 78,
      "name": "encoder",
      "signature": "const encoder = device.createCommandEncoder();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 79,
      "name": "pass",
      "signature": "const pass = encoder.beginRenderPass({"
    }
  ],
  "document": null,
  "findings": [],
  "generated": false,
  "href": "https://banes-lab.com/anatomy/social-share#file-social-share-core-renderers-shader-renderer-ts",
  "language": "typescript",
  "layer": "product",
  "name": "shader.renderer.ts",
  "path": "core/renderers/shader.renderer.ts",
  "ref": "anatomy:file-social-share-core-renderers-shader-renderer-ts",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/social-share#folder-social-share-core-renderers",
          "json": "https://banes-lab.com/json/anatomy/social-share/folder-social-share-core-renderers",
          "label": "core/renderers",
          "markdown": "https://banes-lab.com/anatomy/social-share/folder-social-share-core-renderers.md",
          "ref": "chapter:/anatomy/social-share#folder-social-share-core-renderers"
        }
      ],
      "relation": "contained-in"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/social-share#folder-social-share-core-renderers",
          "json": "https://banes-lab.com/json/anatomy/social-share/folder-social-share-core-renderers",
          "label": "core/renderers",
          "markdown": "https://banes-lab.com/anatomy/social-share/folder-social-share-core-renderers.md",
          "ref": "chapter:/anatomy/social-share#folder-social-share-core-renderers"
        }
      ],
      "relation": "linked-from"
    }
  ],
  "slots": {
    "concern": "renderer",
    "subject": "shader",
    "variant": null
  },
  "stats": {
    "bytes": 3879,
    "callable": 4,
    "definitions": 28,
    "edges": 1,
    "exported": 13,
    "files": 1,
    "findings": {},
    "flows": {
      "leaf": 1,
      "entry": 1,
      "isolated": 26
    },
    "lines": {
      "blank": 5,
      "code": 92,
      "total": 97
    }
  },
  "summary": "92 lines of code and 28 definitions.",
  "text": "https://banes-lab.com/source/social-share/core/renderers/shader.renderer.ts.txt",
  "tree": "social-share",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/anatomy/social-share#file-social-share-core-renderers-stage-renderer-ts",
      "json": "https://banes-lab.com/json/source/social-share/core/renderers/stage.renderer.ts",
      "label": "core/renderers/stage.renderer.ts",
      "markdown": "https://banes-lab.com/source/social-share/core/renderers/stage.renderer.ts.md",
      "ref": "anatomy:file-social-share-core-renderers-stage-renderer-ts"
    },
    "previous": {
      "href": "https://banes-lab.com/anatomy/social-share#file-social-share-core-renderers-image-renderer-ts",
      "json": "https://banes-lab.com/json/source/social-share/core/renderers/image.renderer.ts",
      "label": "core/renderers/image.renderer.ts",
      "markdown": "https://banes-lab.com/source/social-share/core/renderers/image.renderer.ts.md",
      "ref": "anatomy:file-social-share-core-renderers-image-renderer-ts"
    }
  },
  "up": {
    "href": null,
    "json": "https://banes-lab.com/json/api/source/social-share/core/renderers",
    "label": "core/renderers",
    "markdown": "https://banes-lab.com/api/source/social-share/core/renderers.md",
    "ref": "api:source/social-share/core/renderers"
  }
}
