Shader assets: graph-built shaders, the Shader tab and sprite rows from the graph (#62)
game-maker / suite (push) Failing after 3m59s
game-maker / suite (push) Failing after 3m59s
A shader is an asset carrying a node graph (Texture color, Output, Property, Color, Add/Subtract/Multiply/Divide, Mix, Luminance) that compiles to the GLSL fragment of a Pixi filter. The Shader tab reuses the Behavior canvas; a sprite wears a shader through its Shader picker, and the rows below it are the graph's Property nodes. Property schema, resolution and deviation take the project because a sprite's rows now live in another asset. The built-in registry of the prototype is gone; "Adjust colors" ships as a graph in the fixture and the three example games. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
6141d07d4f
commit
42cafa7543
62 files changed
+1682
-144
No files matched your search
@@ -13,7 +13,7 @@ import {
|
||||
type Project,
|
||||
} from '../model/Project';
|
||||
import type { SceneObject } from '../model/SceneObject';
|
||||
import { propDef, type PropertyDef } from '../properties/PropertySchema';
|
||||
import { type PropertyDef, schemaForAsset, schemaForObject } from '../properties/PropertySchema';
|
||||
import { CommandError } from './Command';
|
||||
|
||||
export function requireAsset(project: Project, assetId: string): Asset {
|
||||
@@ -91,8 +91,15 @@ export function requireNodeDef(type: string): NodeDef {
|
||||
return def;
|
||||
}
|
||||
|
||||
export function requirePropDef(asset: Asset, key: string): PropertyDef {
|
||||
const def = propDef(asset, key);
|
||||
/** The row `key` names on the asset – or, given the placed object, on that object (its shader's rows). */
|
||||
export function requirePropDef(
|
||||
project: Project,
|
||||
asset: Asset,
|
||||
key: string,
|
||||
object?: SceneObject,
|
||||
): PropertyDef {
|
||||
const schema = object ? schemaForObject(project, asset, object) : schemaForAsset(project, asset);
|
||||
const def = schema.find((d) => d.key === key);
|
||||
if (!def) throw new CommandError(`Property "${key}" is not defined for ${asset.type}`);
|
||||
return def;
|
||||
}
|
||||
Reference in new issue
Block a user