Skip to content

Instantly share code, notes, and snippets.

@delasign
Created September 3, 2018 23:37
Show Gist options
  • Save delasign/2b797c6afd819c7cc04ee42158ec5787 to your computer and use it in GitHub Desktop.
Save delasign/2b797c6afd819c7cc04ee42158ec5787 to your computer and use it in GitHub Desktop.
Add a metal shader with transparency to child.
func addShaderWithTransparencyToChild(child:SCNNode) {
let program = SCNProgram()
let shaderName = "YOUR_SHADER_NAME";
program.fragmentFunctionName = shaderName + "SurfaceFragment"
program.vertexFunctionName = shaderName + "VertexShader"
program.isOpaque = false;
// CREATE A MATERIAL, ADD THE PROGRAM, AND ADD IT TO THE CHILD.
let shaderMaterial = SCNMaterial()
shaderMaterial.program = program;
shaderMaterial.transparencyMode = .rgbZero;
shaderMaterial.blendMode = .alpha;
shaderMaterial.writesToDepthBuffer = false
shaderMaterial.readsFromDepthBuffer = false
shaderMaterial.cullMode = .back
child.geometry?.materials.removeAll();
child.geometry?.materials = [shaderMaterial];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment