Pass
Type | Name | Interface Description |
---|---|---|
Variables | depthTest: boolean | Depth Test Switch |
Example
mainPass.depthTest = false;
Use Case
@customNode()
export class Use Case_Pass_depthTest extends BasicScriptNode{
@input()
sceneObject: APJS.SceneObject;
@input()
depthTest: boolean = false;
execute() {
const renderer = this.sceneObject.getComponent('MeshRenderer') as APJS.MeshRenderer;
if (!renderer)
return;
const material = renderer.mainMaterial;
if (!material)
return;
const mainPass = material.mainPass
mainPass.depthTest = this.depthTest;
}
}
Type | Name | Interface Description |
---|---|---|
Variables | depthWrite: boolean | Depth Write Switch |
Example
mainPass.depthWrite = false;
Use Case
@customNode()
export class Use Case_Pass_depthWrite extends BasicScriptNode{
@input()
sceneObject: APJS.SceneObject;
@input()
depthWrite: boolean = false;
execute() {
const renderer = this.sceneObject.getComponent('MeshRenderer') as APJS.MeshRenderer;
if (!renderer)
return;
const material = renderer.mainMaterial;
if (!material)
return;
const mainPass = material.mainPass
mainPass.depthWrite = this.depthWrite;
}
}
Type | Name | Interface Description |
---|---|---|
Variables | depthFunction: DepthFunction | Depth Test Function |
Example
mainPass.depthFunction = APJS.DepthFunction.Greater;
Use Case
@customNode()
export class Use Case_Pass_depthTest extends BasicScriptNode{
@input()
sceneObject: APJS.SceneObject;
execute() {
const renderer = this.sceneObject.getComponent('MeshRenderer') as APJS.MeshRenderer;
if (!renderer)
return;
const material = renderer.mainMaterial;
if (!material)
return;
const mainPass = material.mainPass
mainPass.depthFunction = APJS.DepthFunction.Greater;
}
}
Type | Name | Interface Description |
---|---|---|
Variables | colorMask: ColorMask | Color Mask |
Example
let mask = 0;
mask |= APJS.ColorMask.R;
mask |= APJS.ColorMask.G;
mask |= APJS.ColorMask.B;
mask |= APJS.ColorMask.A;
mainPass.colorMask = mask;
Use Case
@customNode()
export class Use Case_Pass_colorMask extends BasicScriptNode{
@input()
sceneObject: APJS.SceneObject;
@input()
R: boolean = true;
@input()
G: boolean = true;
@input()
B: boolean = true;
@input()
A: boolean = true;
execute() {
const renderer = this.sceneObject.getComponent('MeshRenderer') as APJS.MeshRenderer;
if (!renderer)
return;
const material = renderer.mainMaterial;
if (!material)
return;
const mainPass = material.mainPass
let mask = 0;
if (this.R)
mask |= APJS.ColorMask.R;
if (this.G)
mask |= APJS.ColorMask.G;
if (this.B)
mask |= APJS.ColorMask.B;
if (this.A)
mask |= APJS.ColorMask.A;
mainPass.colorMask = mask;
}
}
Type | Name | Interface Description |
---|---|---|
Variables | cullMode: CullMode | Face Culling Mode |
Example
mainPass.cullMode = APJS.CullMode.Back;
Use Case
@customNode()
export class Use Case_Pass_cullMode extends BasicScriptNode{
@input()
sceneObject: APJS.SceneObject;
@input()
back: boolean = true;
execute() {
const renderer = this.sceneObject.getComponent('MeshRenderer') as APJS.MeshRenderer;
if (!renderer)
return;
const material = renderer.mainMaterial;
if (!material)
return;
const mainPass = material.mainPass
if (this.back)
mainPass.cullMode = APJS.CullMode.Back;
else
mainPass.cullMode = APJS.CullMode.Front;
}
}
Type | Name | Interface Description |
---|---|---|
Variables | stencilState: StencilState | Template Test |
Example
mainPass.stencilState.enable = true;
mainPass.stencilState.failOperation = APJS.StencilOperation.Keep; mainPass.stencilState.passOperation = APJS.StencilOperation.Replace;
mainPass.stencilState.compareFunction = APJS.StencilFunction.Always;
mainPass.stencilState.writeMask = 42;
mainPass.stencilState.referenceValue = 42;
Use Case
@customNode()
export class Use Case_Pass_stencilSetup extends BasicScriptNode{
@input()
window: APJS.SceneObject;
@input()
objects: APJS.SceneObject[];
execute() {
this.setup1();
this.setup2();
}
setup1() {
const renderer = this.window.getComponent('MeshRenderer') as APJS.MeshRenderer;
if (!renderer)
return;
const material = renderer.mainMaterial;
if (!material)
return;
const mainPass = material.mainPass
material.renderQueue = 1;
mainPass.stencilState.enable = true;
mainPass.stencilState.failOperation = APJS.StencilOperation.Keep;
mainPass.stencilState.passOperation = APJS.StencilOperation.Replace;
mainPass.stencilState.compareFunction = APJS.StencilFunction.Always;
mainPass.stencilState.writeMask = 42;
mainPass.stencilState.referenceValue = 42;
}
setup2() {
for(let i = 0; i < this.objects.length; i++) {
const obj = this.objects[i];
const renderer = obj.getComponent('MeshRenderer') as APJS.MeshRenderer;
if (!renderer)
return;
const material = renderer.mainMaterial;
if (!material)
return;
const mainPass = material.mainPass
mainPass.stencilState.enable = true;
mainPass.stencilState.failOperation = APJS.StencilOperation.Keep;
mainPass.stencilState.passOperation = APJS.StencilOperation.Keep;
mainPass.stencilState.compareFunction = APJS.StencilFunction.Equal;
mainPass.stencilState.referenceValue = 42;
}
}
}