feat: add render graph driven renderer architecture
Amp-Thread-ID: https://ampcode.com/threads/T-019f9d91-77c1-7206-a60f-ed6554ce92ab Co-authored-by: Heaust Azure <heaust.azure@gmail.com>
This commit is contained in:
Vendored
+88
@@ -0,0 +1,88 @@
|
||||
/** Test-only headless authority assembled from the example's public node definitions. */
|
||||
import { compileFxNodeComposition, composeNode, composeSocket, setTheme } from "@lib/composition/index.js";
|
||||
import type { FxNodeCompositionData } from "@lib/composition/index.js";
|
||||
import { bindFxNodeHeadless } from "@lib/headless-runtime.js";
|
||||
import {
|
||||
APPLICATION_HEADER_STYLES,
|
||||
APPLICATION_ID,
|
||||
APPLICATION_RESOURCES,
|
||||
APPLICATION_VERSION,
|
||||
applicationCompatibility,
|
||||
} from "../examples/blender/nodes/application.js";
|
||||
import { exampleTheme } from "../examples/shared/theme.js";
|
||||
import {
|
||||
anySocket,
|
||||
floatSocket,
|
||||
vectorSocket,
|
||||
colorSocket,
|
||||
shaderSocket,
|
||||
geometrySocket,
|
||||
} from "../examples/blender/nodes/socket-types.js";
|
||||
import { frameNode } from "../examples/blender/nodes/common/frame.js";
|
||||
import { rerouteNode } from "../examples/blender/nodes/common/reroute.js";
|
||||
import { groupInputNode } from "../examples/blender/nodes/common/group-input.js";
|
||||
import { groupOutputNode } from "../examples/blender/nodes/common/group-output.js";
|
||||
import { valueNode } from "../examples/blender/nodes/shader/value.js";
|
||||
import { colorNode } from "../examples/blender/nodes/shader/color.js";
|
||||
import { mathNode } from "../examples/blender/nodes/shader/math.js";
|
||||
import { vectorMathNode } from "../examples/blender/nodes/shader/vector-math.js";
|
||||
import { mixNode } from "../examples/blender/nodes/shader/mix.js";
|
||||
import { colorRampNode } from "../examples/blender/nodes/shader/color-ramp.js";
|
||||
import { textureCoordinateNode } from "../examples/blender/nodes/shader/texture-coordinate.js";
|
||||
import { noiseTextureNode } from "../examples/blender/nodes/shader/noise-texture.js";
|
||||
import { imageTextureNode } from "../examples/blender/nodes/shader/image-texture.js";
|
||||
import { principledBsdfNode } from "../examples/blender/nodes/shader/principled-bsdf.js";
|
||||
import { materialOutputNode } from "../examples/blender/nodes/shader/material-output.js";
|
||||
import { positionNode } from "../examples/blender/nodes/geometry/position.js";
|
||||
import { meshCubeNode } from "../examples/blender/nodes/geometry/mesh-cube.js";
|
||||
import { setPositionNode } from "../examples/blender/nodes/geometry/set-position.js";
|
||||
import { transformGeometryNode } from "../examples/blender/nodes/geometry/transform-geometry.js";
|
||||
import { joinGeometryNode } from "../examples/blender/nodes/geometry/join-geometry.js";
|
||||
import { imageNode } from "../examples/blender/nodes/compositor/image.js";
|
||||
import { colorBalanceNode } from "../examples/shared/nodes/color-balance.js";
|
||||
|
||||
const seed = {
|
||||
schemaVersion: 2,
|
||||
id: APPLICATION_ID,
|
||||
version: APPLICATION_VERSION,
|
||||
nodeStyles: APPLICATION_HEADER_STYLES,
|
||||
resources: APPLICATION_RESOURCES,
|
||||
compatibility: applicationCompatibility,
|
||||
socketTypes: {},
|
||||
nodes: {},
|
||||
} as const;
|
||||
const themed = setTheme(seed, exampleTheme);
|
||||
const socket1 = composeSocket(themed, ...anySocket);
|
||||
const socket2 = composeSocket(socket1, ...floatSocket);
|
||||
const socket3 = composeSocket(socket2, ...vectorSocket);
|
||||
const socket4 = composeSocket(socket3, ...colorSocket);
|
||||
const socket5 = composeSocket(socket4, ...shaderSocket);
|
||||
const socket6 = composeSocket(socket5, ...geometrySocket);
|
||||
const node1 = composeNode(socket6, ...frameNode);
|
||||
const node2 = composeNode(node1, ...rerouteNode);
|
||||
const node3 = composeNode(node2, ...groupInputNode);
|
||||
const node4 = composeNode(node3, ...groupOutputNode);
|
||||
const node5 = composeNode(node4, ...valueNode);
|
||||
const node6 = composeNode(node5, ...colorNode);
|
||||
const node7 = composeNode(node6, ...mathNode);
|
||||
const node8 = composeNode(node7, ...vectorMathNode);
|
||||
const node9 = composeNode(node8, ...mixNode);
|
||||
const firstBranch = composeNode(node9, ...colorRampNode);
|
||||
const node11 = composeNode(socket6, ...textureCoordinateNode);
|
||||
const node12 = composeNode(node11, ...noiseTextureNode);
|
||||
const node13 = composeNode(node12, ...imageTextureNode);
|
||||
const node14 = composeNode(node13, ...principledBsdfNode);
|
||||
const node15 = composeNode(node14, ...materialOutputNode);
|
||||
const secondBranch = composeNode(node15, ...positionNode);
|
||||
const node17 = composeNode(socket6, ...meshCubeNode);
|
||||
const node18 = composeNode(node17, ...setPositionNode);
|
||||
const node19 = composeNode(node18, ...transformGeometryNode);
|
||||
const node20 = composeNode(node19, ...joinGeometryNode);
|
||||
const node21 = composeNode(node20, ...imageNode);
|
||||
const thirdBranch = composeNode(node21, ...colorBalanceNode);
|
||||
const source: FxNodeCompositionData = {
|
||||
...firstBranch,
|
||||
nodes: { ...firstBranch.nodes, ...secondBranch.nodes, ...thirdBranch.nodes },
|
||||
};
|
||||
export const APPLICATION_COMPILED = compileFxNodeComposition(source);
|
||||
export const APPLICATION_HEADLESS = bindFxNodeHeadless(APPLICATION_COMPILED);
|
||||
Reference in New Issue
Block a user