Update example.neu

This commit is contained in:
Skye Terran 2021-08-17 18:33:24 -07:00
parent c52420a78c
commit 624344b185

View File

@ -1,66 +1,80 @@
// & declares a key pointing to object instantiated by that declaration (in this case, we're using integers in hex) // & declares a key pointing to object instantiated by that declaration (in this case, we're using integers in hex)
// keys are NOT indices - ultimately they should be ingested as keys to a dictionary containing each object in the Neutrino file // keys are NOT indices - ultimately they should be ingested as keys to a dictionary containing each object in the Neutrino file
// * gets a reference to a key's object (Neutrino will try to preserve this reference in the target software whenever possible) // * gets a reference to a key's object (Neutrino will try to preserve this reference in the target software whenever possible)
// # gets a copy of a key's object (Neutrino will simply replace this reference with a copy of its value - this is simply to consolidate repetitive data in-exchange) // # gets a copy from a cached object's key (Neutrino will simply replace this reference with a copy of its value - this is simply to consolidate repetitive data in-exchange)
// scene graph // overall structure:
scene { /*
&0: object { meta = {},
name: string = "SM_LargeWindow_A", graph = {
mesh: mesh = *2, scene = {},
transform: trans = { assets = {}
},
cache = {}
*/
meta = {
//
},
graph = {
// note - "scene" and "assets" are essentially namespaces
// the scene itself
scene = {
&0: object = {
name: string = "SM_LargeWindow_A",
mesh: mesh = *2,
transform: trans = {
position: vec3 = #8,
rotation: vec3 = #8,
scale: vec3 = #9,
}
},
&1: object = {
name: string = "SM_LargeWindow_A2",
mesh: mesh = *2,
transform: trans = *3
}
},
// assets used by the scene
assets {
&2: mesh {
source: path = "/Assets/Props/LargeWindowA.obj",
materials: [mat] = [*4]
},
&3: trans {
position: vec3 = #8, position: vec3 = #8,
rotation: vec3 = #8, rotation: vec3 = #8,
scale: vec3 = #9, scale: vec3 = #9
},
&4: mat {
name: string = "Simple Glass",
parent: shader = *7,
// "shader.props" is a subtype of the "shader" type, which is just a namespace that keeps it from being mixed up with other "props" subtypes (like "mesh.props", etc.)
parameters: shader.props = {
albedo: tex = *6,
roughness: float = 0.15,
normal: vec4 = #a
}
},
&5: mat {
name: string = "Blockout Grey",
parent: shader = *7,
parameters: shader.props = {
albedo: vec4 = (0.5, 0.5, 0.5, 1.0),
roughness: float = 0.85,
normal: vec4 = #a
}
},
&6: tex {
source: path = "/Assets/Textures/T_WindowGrime.png"
},
&7: shader {
source: path = "/Assets/Shaders/PBRBasic.wgsl"
} }
}, },
&1: object {
name: string = "SM_LargeWindow_A2",
mesh: mesh = *2,
transform: trans = *3
}
}, },
// anonymous objects shared by multiple other objects
// assets cache {
assets {
&2: mesh {
source: path = "/Assets/Props/LargeWindowA.obj",
materials: [mat] = [*4]
},
&3: trans {
position: vec3 = #8,
rotation: vec3 = #8,
scale: vec3 = #9
},
&4: mat {
name: string = "Simple Glass",
parent: shader = *7,
// "shader.props" is a subtype of the "shader" type, which is just a namespace that keeps it from being mixed up with other "props" subtypes (like "mesh.props", etc.)
parameters: shader.props = {
albedo: tex = *6,
roughness: float = 0.15,
normal: vec4 = #a
}
},
&5: mat {
name: string = "Blockout Grey",
parent: shader = *7,
parameters: shader.props = {
albedo: vec4 = (0.5, 0.5, 0.5, 1.0),
roughness: float = 0.85,
normal: vec4 = #a
}
},
&6: tex {
source: path = "/Assets/Textures/T_WindowGrime.png"
},
&7: shader {
source: path = "/Assets/Shaders/PBRBasic.wgsl"
}
}
// objects shared by multiple other objects - optimization, essentially
shared {
// this vector is common as a position or rotation value // this vector is common as a position or rotation value
&8: vec3 = (0.0, 0.0, 0.0), &8: vec3 = (0.0, 0.0, 0.0),
// this vector is common as a scale value // this vector is common as a scale value