镜面效果
一、镜面效果的原理
- 摄像机看到的画面渲染到渲染纹理中
- 再 Shader 中利用该纹理进行翻转渲染即可
二、准备工作
- 创建一个摄像机用来得到镜子看见的画面
- 创建一个 Custom Render Texture 将其关联
三、Custom Render Textuer 的参数
- Dimension 渲染维度
- 2D 2D 纹理
- 2D Array 2D 数组纹理
- Cube 立方体纹理
- 3D 3D 纹理
- Size 像素尺寸
- Anti-aliasing 抗锯齿效果
- Enable Compatible Format 是否启用兼容格式 避免由于特定硬件或者驱动不支持某些格式而引起渲染问题
- Color Format 渲染纹理格式
- Depth Stencil Format 深度模板格式
- Enale Mip Maps 是否允许渲染纹理的使用
- Dynamic Scaling 动态缩放 许渲染纹理根据显示分辨率或其他条件动态调整其大小。 启用此选项可以帮助优化性能,特别是在高分辨率显示设备上。
- Random Write 随机写入 允许在计算着色器(Compute Shader)或其他 GPU 程序中进行随机写操作。 这对于需要进行复杂计算或并行处理的任务非常有用,例如粒子系统、流体模拟或其他基于 GPU 的运算
- Wrap Mode 纹理平铺模式
- Repeat 重复
- Clamp 拉伸
- Mirror 镜像
- Mirror Once 镜像一次
- Per-axis UV 指定轴向
- Filter Mode 拉伸时的过滤模式
- point 块状过滤
- Bilinear 模糊过滤
- Trilinear 类似于 Bilinear,但是纹理也在不同的 Mip 级别之中过滤
- Shadow Sampling Mode 用于处理自定义纹理在阴影计算中的采样模式
- None 不使用,自定义渲染我呢里将不会用于阴影的贴图采样
- Compare Depths 使用深度比较进行阴影采样。这种模式通常用于标准阴影映射技术,比较光源深度与当前像素深度以确定阴影
- Material 自定义纹理材质
- Initialization Mode 初始化纹理频率
- OnLoad:创建时初始化一次
- Realtime:每一帧初始化纹理
- OnDemand:通过脚本按需初始化纹理
- Source 纹理如何初始化
- Texture and Color 叠加颜色来初始化纹理
- Material 使用材质初始化纹理
- Update Mode 自定义渲染纹理的频率
- Double Buffered 启用双缓冲技术 这可以在某些应用场景中提升性能和稳定性 双缓冲技术涉及使用两个缓冲区来交替存储和处理数据,从而减少由于直接读写同一个缓冲区引起的竞争和冲突
- Wrap Update Zones 控制更新区域的环绕方式 对于处理需要特定边缘处理或重复性内容的渲染效果非常有用
- Updte Zone Space 用于控制纹理坐标更新方式的选项。 它主要影响如何在 Shader 中处理纹理坐标,特别是在对应于动态纹理的情况下
四、效果实现
1.实现思路
- 结合单张纹理_颜色显示的 Shader
- 在顶点着色器中,让 UV 坐标的 x 反向(坐标范围为 0~1,所以直接 1 - UV.x 即可)
- 将渲染纹理应用到 Shader 中即可
2.实现示例
1 | Shader "Unlit/Mirror" |