我需要提取相机屏幕的深度值并写入文件。我读到_CameraDepthTexture只能从着色器访问。我对着色器不是很熟悉是否有可能在着色器代码中写入文件?或者有没有其他方法可以从_CameraDepthTexture中提取这些信息?提取_CameraDepthTexture值Unity
3
A
回答
1
这个“可能”理论上有效,但我没有测试过。我假设这是某种按需调试或测试,将在需要时调用?如果你试图写出每一帧文件,这将不是非常有利于性能。
1)创建渲染纹理的第二个相机。将它放在与主相机相同的位置和方向上。
2)启用第二台摄像机的深度缓冲区。
3)编写一个简单的像素着色器,获取深度缓冲区值并将其输出为颜色值。
4)使用Unity提供的Texture2D工具将渲染的纹理转换为png或jpg,并写入文件。
您可以通过启用主摄像头上一帧或两帧的后期处理效果并抓住它来使用主摄像头。再次,我没有测试过这个。
这是一个完整的黑客攻击,但是没有办法直接在着色器中编写文件(它在GPU上运行),并且无法获取脚本中的最终深度缓冲区。
这位先生向您展示了这项原则在工作中作为后处理效果的基础知识。你将不得不扩展他的范例来获得你正在寻找的东西。
Unity Shaders – Depth and Normal Textures (Part 1) - by William Chyr
对不起,我不能更具体的与工作的例子。我现在无法访问我的Unity机器来测试它。
相关问题
- 1. Unity从RectTransform获取像素坐标值
- 2. Unity 2D - 取消A值的添加
- 3. 提取值
- 4. 提取JSON值
- 5. JSONPath提取值
- 6. 提取值
- 7. 提取值
- 8. 提取值
- 9. 提取价值
- 10. 值提取
- 11. 提取值
- 12. 提取值
- 13. 提取ListView值
- 14. 提取值
- 15. 提取值
- 16. 提取p值
- 17. 提取值
- 18. 提取值
- 19. 提取值
- 20. Unity 5.3 - C# - 列表<Vector2>如何提取最大的X值?
- 21. Unity:为InjectionConstructor提供参数
- 22. 值提取在PHP
- 23. 提取float/double值
- 24. 提取值返回
- 25. 提取物价值
- 26. 提取值对象
- 27. 提取字段值
- 28. 变量值提取
- 29. 提取值从__NSArrayM
- 30. 提取值响应