ios - 我们可以在 SceneKit 中的透明平面上渲染阴影吗

标签 ios swift scenekit

我已经为平面使用了着色器修改器,但它不起作用。谁能建议我如何解决它?

let myShaderfragment = "#pragma transparent;\n" + "_output.color.a = 0.0;"
let myShaderSurface = "#pragma transparent;\n" + "_surface.diffuse.a = 0.0;"
 material.shaderModifiers = [SCNShaderModifierEntryPoint.fragment : myShaderfragment, SCNShaderModifierEntryPoint.surface : myShaderSurface]

最佳答案

SceneKit: What's New WWDC 2017 的 session 解释了如何做到这一点。

  1. 对于平面,使用带有 constant 的 Material 作为其 lightingModel .这是最便宜的。
  2. 此 Material 将具有 writesToDepthBuffer设置为 truecolorBufferWriteMask设置为 [](空选项集)。这样飞机将写入深度缓冲区,但不会在屏幕上绘制任何内容。
  3. 设置灯光的 shadowModedeferred这样在渲染对象本身时就不会应用阴影,而是作为最终的后期处理。

关于ios - 我们可以在 SceneKit 中的透明平面上渲染阴影吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45505471/

相关文章:

ios - 当文档从后端更改时如何触发 Couchbase 与 iOS 同步

ios - 如何在 imageView 出现后运行代码

iOS - 将 2D 图像添加到 scenekit 游戏

ios - 弹出窗口下 View 上的事件 UI 导航

ios - Xcode 7.3 的 WCSession 问题

android - 用于显示应用程序加载进度的 UIImageView

ios - 在场景之间切换而不初始化场景

scenekit - 如何将我的体素模型用于我的 SKScene 游戏?

ios - 如何快速增加 TabBar 项目标题的底部偏移量

ios - 通过 URL 链接到 AppStore 上的所有开发者 iPad 应用程序