SceneKit - 如何使用不同的混合模式 - 例如添加剂混合?

时间:2015-04-05 14:19:10

标签: ios objective-c xcode scenekit blending

如何在SceneKit中使用添加剂混合?

如果我必须使用着色器,我会没事的,但我希望有一种更简单的方法,因为即使是SpriteKit也支持混合模式。

编辑:因为这被标记为重复: 我不确定另一个问题的解决方案是否真的在谈论添加剂混合。我还没有工作,所以我问是否有人能够让添加剂混合起作用。

编辑2:我实际上尝试了另一个thead中的“解决方案”并且它不起作用。我的形状(SCNS形状)变成了粉红色,然后根本就没有添加剂。

编辑3:在尝试和摆弄更多之后,我得到了一些工作,但它不是一个合适的添加剂混合物(但?)。颜色肯定更亮,但它们的行为与添加混合完全不同。如果有人对此有所补充/知道如何使其正常运作,我会很高兴。

-(void) additiveTest {
{
SCNNode *node1 = [self createCircleWithRadius: 50.0 atPos:SCNVector3Make(100, 100, 0) withColor: [UIColor colorWithRed:0.5 green:0.0 blue:0.0 alpha: 0.5]];
[_baseNode addChildNode: node1];


SCNNode *node2 = [self createCircleWithRadius: 50.0 atPos:SCNVector3Make(125, 100, -1) withColor: [UIColor colorWithRed:0.5 green: 0.0 blue: 0.0 alpha: 0.5]];
[_baseNode addChildNode: node2];


NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[SCNShaderModifierEntryPointFragment] = @"#pragma transparent\n#pragma body\n_output.color.a = 0.0;";
//    node2.geometry.firstMaterial.shaderModifiers = dict;
node1.geometry.firstMaterial.shaderModifiers = dict;
}

{

    SCNNode *node1 = [self createCircleWithRadius: 50.0 atPos:SCNVector3Make(100, 300, 0) withColor: [UIColor colorWithRed:0.5 green:0.0 blue:0.0 alpha: 0.5]];
    [_baseNode addChildNode: node1];

    SCNNode *node2 = [self createCircleWithRadius: 50.0 atPos:SCNVector3Make(125, 300, -1) withColor: [UIColor colorWithRed:0.5 green: 0.0 blue: 0.0 alpha: 0.5]];
    [_baseNode addChildNode: node2];


}
}

这是结果,在较低的“行”中,圆圈的左侧比我预期的要轻(因为背景是黑色的),或者我错了?

enter image description here

0 个答案:

没有答案