Wie füge ich mit einem Shader in SceneKit Transparenz hinzu?

Ich würde gerne einen Transparenzeffekt von einem Bild haben, jetzt teste ich nur mit einem Torus, aber der Shader scheint nicht mit Alpha zu funktionieren. Nach dem, was ich aus diesem Thread verstanden habe Verwenden von Mischfunktionen in Scenekit) und dieser Wiki-Link zum Thema Transparenz: http: //en.wikibooks.org/wiki/GLSL_Programming/GLUT/Transparenc),GLBlendFunc wird ersetzt durchpragma transparency in SceneKit.

Wollen Sie wissen, was mit diesem Code nicht stimmt?

Ich habe mit SceneKit ein neues Projekt erstellt und das Schiffsnetz durch einen Torus ersetzt.

EDIT:
Ich versuche es mit einem Flugzeug, aber das Bild unten wird nicht im Flugzeug angezeigt. Stattdessen erhalte ich das Bild mit den roten und bräunlichen Kästchen darunter.

Mein Bild mit Alpha:

Das Ergebnis (das Bild mit Alpha sollte die bräunliche Farbe ersetzen):

let plane = SCNPlane(width: 2, height: 2)
var texture = SKTexture(imageNamed:"small")
texture.filteringMode = SKTextureFilteringMode.Nearest
plane.firstMaterial?.diffuse.contents = texture
let ship = SCNNode(geometry: plane) //SCNTorus(ringRadius: 1, pipeRadius: 0.5)
ship.position = SCNVector3(x: 0, y: 0, z: 15)
scene.rootNode.addChildNode(ship)

let myscale : CGFloat = 10
let box = SCNBox(width: myscale, height: myscale, length: myscale, chamferRadius: 0)
box.firstMaterial?.diffuse.contents = UIColor.redColor()
let theBox = SCNNode(geometry: box)
theBox.position = SCNVector3(x: 0, y: 0, z: 5)
scene.rootNode.addChildNode(theBox)


let scnView = self.view as SCNView
scnView.scene = scene
scnView.backgroundColor = UIColor.blackColor()


var shaders = NSMutableDictionary()
shaders[SCNShaderModifierEntryPointFragment] = String(contentsOfFile: NSBundle.mainBundle().pathForResource("test", ofType: "shader")!, encoding: NSUTF8StringEncoding, error: nil)
var material = SCNMaterial()
material.shaderModifiers = shaders
ship.geometry?.materials = [material]

Der Shader:

#pragma transparent
#pragma body
_output.color.rgba = vec4(0.0, 0.2, 0.0, 0.2);

Antworten auf die Frage(6)

Ihre Antwort auf die Frage