在金属中的半透明物体内渲染不透明物体
Rendering opaque object inside semi-transparent one in Metal
我正在尝试在半透明对象中渲染不透明对象。
我的做法是:
深度比较功能设置为较少
descriptor.depthCompareFunction = .less
首先使用不透明对象进行绘制调用,不启用混合。
使用半透明对象进行第二次绘制调用,启用混合。
if !opaque {
pipelineDescriptor.colorAttachments[0].isBlendingEnabled = true
pipelineDescriptor.colorAttachments[0].rgbBlendOperation = .add
pipelineDescriptor.colorAttachments[0].sourceRGBBlendFactor = .sourceAlpha
pipelineDescriptor.colorAttachments[0].destinationRGBBlendFactor = .oneMinusSourceAlpha
}
但我得到了意想不到的结果:example
我在 Caroline Begbie (raywenderlich) 的帮助下找到了解决方案:从前到后排序顶点...
https://forums.raywenderlich.com/t/rendering-opaque-object-inside-transparent-one/121942/2
我正在尝试在半透明对象中渲染不透明对象。
我的做法是:
深度比较功能设置为较少
descriptor.depthCompareFunction = .less
首先使用不透明对象进行绘制调用,不启用混合。
使用半透明对象进行第二次绘制调用,启用混合。
if !opaque {
pipelineDescriptor.colorAttachments[0].isBlendingEnabled = true
pipelineDescriptor.colorAttachments[0].rgbBlendOperation = .add
pipelineDescriptor.colorAttachments[0].sourceRGBBlendFactor = .sourceAlpha
pipelineDescriptor.colorAttachments[0].destinationRGBBlendFactor = .oneMinusSourceAlpha
}
但我得到了意想不到的结果:example
我在 Caroline Begbie (raywenderlich) 的帮助下找到了解决方案:从前到后排序顶点...
https://forums.raywenderlich.com/t/rendering-opaque-object-inside-transparent-one/121942/2