- 用户指南
- Components
- 寻路
- 动画组件
- 资源组件
- 音频组件(AudioComponent)
- 音频侦听器(AudioListener)
- 音频源(AudioSource)
- 音频过滤器(AudioFilter)(仅限专业版)
- 混响区域(ReverbZone)
- 麦克风(Microphone)
- 物理组件(PhysicsComponent)
- 箱体碰撞体(BoxCollider)
- 胶囊碰撞体(CapsuleCollider)
- 角色控制器(CharacterController)
- 角色关节(CharacterJoint)
- 可配置关节(ConfigurableJoint)
- 恒定力(ConstantForce)
- 固定关节(FixedJoint)
- 铰链关节(HingeJoint)
- 网格碰撞体(MeshCollider)
- 物理材质(PhysicsMaterial)
- 刚体(Rigidbody)
- (SphereCollider)
- 弹簧关节(SpringJoint)
- 交互布(InteractiveCloth)
- 蒙皮布(SkinnedCloth)
- 车轮碰撞体(WheelCollider)
- 游戏对象(GameObject)
- 图像效果(ImageEffectScripts)
- 高光溢出和镜头光晕(BloomandLensFlare)
- 模糊(Blur)
- 相机运动模糊(MotionBlur)
- 颜色修正曲线(ColorCorrectionCurve)
- 颜色修正(ColorCorrection)
- 颜色修正查找纹理(ColorCorrectionLookupTexture)
- 对比度增强(ContrastEnhance)
- 对比度拉伸(ContrastStretch)
- 起皱(Crease)
- 视野深度(DepthofField)3.4
- 视野深度(DepthofField)
- 边缘检测(EdgeDetection)
- 鱼眼(Fisheye)
- 全局雾(GlobalFog)
- 发光(Glow)
- 灰度(Grayscale)
- 运动模糊(MotionBlur)
- 噪波和颗粒(NoiseAndGrain)
- 噪波(Noise)
- 屏幕叠加(ScreenOverlay)
- 棕褐色调(SepiaTone)
- 边缘检测效应
- 阳光照射(SunShaft)
- 屏幕空间环境光遮蔽(SSAO)(ScreenSpaceAmbientOcclusion(SSAO))
- 倾斜位移(TiltShift)
- 色调映射(Tonemapping)
- 旋转(Twirl)
- 渐晕(Vignetting)(和色差(ChromaticAberration))
- 状态同步详细信息
- 旋涡
- 设置管理器(SettingsManager)
- 网格组件(MeshComponents)
- 网络组
- 效果
- 渲染组件
- 变换组件(TransformComponent)
- UnityGUI组
- 向导
- 地形引擎指南(TerrainEngineGuide)
- 树木创建器指南
- 动画视图指南
- GUI脚本指南
- 网络参考指南
- 移动设备上的网络连接
- 高级网络概念
- Unity中的网络元素
- RPC详细信息
- NetworkLevelLoading
- 主服务器
- 最小化网络带宽
- 社交API
- 内置着色器指南
- Unity的后台渲染
- 着色器参考
- ShaderLab语法:Shader
- ShaderLab语法:Properties
- ShaderLab语法:子着色器(SubShader)
- ShaderLab语法:Pass
- ShaderLabsyntax:Color,Material,Lighting
- ShaderLab语法:剔除和深度测试(Culling&DepthTesting)
- ShaderLab语法:纹理组合器(TextureCombiners)
- ShaderLab语法:雾(Fog)
- ShaderLab语法:Alpha测试(Alphatesting)
- ShaderLab语法:混合(Blending)
- ShaderLab语法:通道标记(PassTags)
- ShaderLab语法:名称(Name)
- ShaderLab语法:绑定通道(BindChannels)
- ShaderLab语法:使用通道(UsePass)
- ShaderLab语法:GrabPass
- ShaderLab语法:子着色器标记(SubShaderTags)
- ShaderLab语法:回退(Fallback)
- ShaderLab语法:自定义编辑器(CustomEditor)
- ShaderLab语法:其他命令
- ShaderLab语法:Pass
- 高级ShaderLab主题
- ShaderLab内置值
- 其他
- 网络视图
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Mecanim 动画系统
- 动画状态机
- 混合树 (Blend Tree)
- 在 Mecanim 中使用动画曲线 (Animation Curves)(仅限专业版 (Pro))
- 循环动画片段
- Animation State Machine Preview (solo and mute)
- 动画参数
- 旧动画系统
- 使用类人动画
- 动画层
- 资源导入与创建
- 音轨模块
- 减少文件大小
- 光照贴图 UV
- 资源准备和导入
- 如何安装或升级标准资源 (Standard Assets)?
- FBX 导出指南
- 从 Maya 中导入对象
- 从 Cinema 4D 中导入对象
- 从 3D Studio Max 中导入对象
- 从 Cheetah3D 中导入对象
- 从 Modo 中导入对象
- 从 Lightwave 中导入对象
- 从 Blender 中导入对象
- 为优化性能建模角色
- 如何使用法线贴图 (NormalMaps)?
- 如何修正已导入模型的旋转?
- 程序材质
- 如何使用水?
- 分析器(仅限专业版)
- 绘制调用批处理
- 遮挡剔除(仅限专业版)
- Unity 中的高动态范围 (High Dynamic Range) 渲染
- 在 Unity 4 中使用 DirectX 11
- 文本场景文件格式(仅限专业版)
- 使用网络播放器模版
- 平台依赖编译
- 日志文件
- 首选项
- 粒子系统曲线编辑器
- 渐变编辑器
- 怎样制作网格粒子发射器?(旧粒子系统)
- 深入了解光照贴图
- 光照贴图快速入门
- 着色器
- 动画脚本(旧版)
- 自定义
- 布局模式
- 扩展编辑器
- 网络实例化
- 材质和着色器
- 如何使用细节纹理?
- 着色器:顶点和片段程序
- Unity 中的阴影
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
使用深度纹理
可以创建深度纹理,其中每个像素包含一个高精度的“深度”值(请参阅 RenderTextureFormat.Depth)。这主要在一些效果需要有场景深度时使用(例如,软粒子、屏幕空间环境光遮蔽和半透明均需要场景深度)。
深度纹理中的像素值范围是 0 到 1,同时呈非线性分布。精度通常是 24 位或 16 位,具体取决于所使用的深度缓冲区。从深度纹理读取时,会返回一个 0..1 范围内的高精度值。如果需要获取与相机的距离或者线性值,则需手动计算。
Unity 中的深度纹理在不同平台上的执行是不同的。
- 在 Direct3D 9 (Windows) 上,深度纹理可以是本地的深度缓冲区,也可以是单通道 32 位浮点纹理(“R32F”Direct3D 格式)。
- 图形卡必须支持本地深度缓冲区(INTZ 格式)或浮点渲染纹理中的任何一个,以便使其正常运行。
- 当渲染进深度纹理时,片段程序必须输出需要的数值。
- 当从深度纹理读取时,颜色的红色组件包含高精度数值。
- 在 OpenGL (Mac OS X) 上,深度纹理是本地的 OpenGL 深度缓冲区(请参阅 ARB_depth_texture)。
- 图形卡必须支持 OpenGL 1.4 或 ARB_depth_texture 扩展。
- 深度纹理与渲染的 Z 缓冲区内容相对应,它不使用片段程序输出的结果。
- OpenGL ES 2.0 (iOS/Android) 与上面的 OpenGL 十分类似。
- GPU 必须支持 GL_OES_depth_texture 扩展
- 和 OpenGL 一样,Direct3D 11 (Windows) 也具有本地深度纹理功能。
- Flash (Stage3D) 使用按颜色编码的深度纹理来模仿它所需要的高精度。
使用深度纹理帮助宏
大多数时候,深度纹理用于渲染从相机的深度。在此情况下,UnityCG.cginc
include file 包含一些宏以处理上述难题:
- UNITY_TRANSFER_DEPTH(o):计算顶点的视角空间深度,并输出到 o(必须是 float2)中。渲染进深度纹理时,在顶点程序中使用。在有本地深度纹理的平台上,该宏不会起任何作用,因为 Z 缓冲区的值是隐式渲染的。
- UNITY_OUTPUT_DEPTH(i):从 i 返回视角空间深度(必须是 float2)。渲染进深度纹理时,在片段程序中使用。在有本地深度纹理的平台上,该宏总是返回 0,因为 Z 缓冲区的值是隐式渲染的。
- COMPUTE_EYEDEPTH(i):计算顶点的视角空间深度,并输出到 o。不渲染进深度纹理时,在顶点程序中使用。
- DECODE_EYEDEPTH(i):从深度纹理 i 得到高精度值,返回相应的视角空间深度。该宏在 Direct3D 中仅返回 i*FarPlane。在有本地深度纹理的平台上,它进行线性化并扩展该值,从而匹配相机的范围。
例如,这个着色器渲染其对象的深度:
Shader "Render Depth" { SubShader { Tags { "RenderType"="Opaque" } Pass { Fog { Mode Off } CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct v2f { float4 pos : SV_POSITION; float2 depth : TEXCOORD0; }; v2f vert (appdata_base v) { v2f o; o.pos = mul (UNITY_MATRIX_MVP, v.vertex); UNITY_TRANSFER_DEPTH(o.depth); return o; } half4 frag(v2f i) : COLOR { UNITY_OUTPUT_DEPTH(i.depth); } ENDCG } } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论