首页 > 其他分享 >Unity解决z冲突(Z-Fighting)的几种方式

Unity解决z冲突(Z-Fighting)的几种方式

时间:2024-03-21 18:13:03浏览次数:19  
标签:渲染 对象 Fighting 几种 Unity 偏移 深度 着色器 剪裁

1、在物理上将对象移得更远
在大多数情况下,只需增加战斗对象之间的距离就可以解决深度冲突问题。这是最明显的解决方案,但遗憾的是,根据具体情况,并不总是可能的,但如果是的话,那么总是尝试增加对象之间的距离,如果这样做没有任何缺点!Unity Z-Fight 示例。
2、增加相机的*剪裁*面并减少远剪裁*面。相机
剪裁*面的范围越小,深度缓冲精度就不会被浪费。在运行时更改这些值也可能是值得的,例如在通过双筒望远镜观察时增加远剪裁*面和*剪裁*面。
 3、微移着色器深度偏移以强制将对象渲染在顶部
有时您可能希望一个对象位于另一个对象内,但仍希望将一个对象强制渲染在顶部。(例如墙壁上的涂鸦、地面上的污垢等)在这些情况下您可以调整着色器偏移。这将在不物理移动顶点的情况下偏移渲染对象的渲染。  
Offset需要2个参数;相加以计算深度偏移的因子和单位。
– 因子参数随着屏幕空间中对象的斜率而变化,这意味着从某个角度查看对象时您会看到偏移量受到影响。
– 单位参数随最小可解析深度缓冲区值缩放,这意味着随着深度缓冲区变得不太精确,该值将增加,以防止深度冲突。
使用负偏移值将渲染拉*相机,例如“Offset -1 -1”将以一定角度或直接在深度缓冲区精度要求严格的位置将偏移拉*。(请注意,某些较旧的移动设备可能会忽略因子偏移参数,因此在这些情况下,您可能只能依靠设置更大的单位值!)
4、真正强制一个对象始终渲染在顶部
您可能只想强制某些对象始终位于其他所有对象之上。在这些情况下,您应该在着色器内将 ZTest 属性设置为 Off,这将使其忽略相机深度,而只是根据渲染队列顺序进行渲染。(渲染队列可以在着色器中设置,也可以直接从材质上的渲染队列属性设置。

参考:

1、https://docs.unity3d.com/cn/current/Manual/SL-Offset.html

2、https://www.unity3dtips.com/zh/unity-z-fighting-solutions/

标签:渲染,对象,Fighting,几种,Unity,偏移,深度,着色器,剪裁
From: https://www.cnblogs.com/Jason-c/p/18087972

相关文章

  • Java list初始化的几种办法
    在Java中初始化List的五种方法1.构造List后使用List.add初始化2.使用{{}}双括号语法3.使用Arrays.asList4.使用Stream(JDK8)5.使用Lists(JDK9)在Java中初始化List的五种方法Java中经常需要使用到List,下面简单介绍几种常见的初始化方式。1.构造......
  • Unity学习笔记 6.2D换帧动画
    下载源码UnityPackage目录1.导入图片1.1.图片的叠放顺序2.图片切片3.用动画控制器让马......
  • unity学习(66)——控制器Joystick Pack优化
    JoystickPack这种重力带惯性不利于正常开发。决定进行优化。有一种万事俱备只欠东风的感觉。源代码如下: 1.在脚本中找到轮盘所输出的方向值2.把方向的改变值加到鸣人模型身上。2.1控制器脚本中添加model变量2.2在unity中赋值 2.3代码中修改位置usingSystem.Col......
  • 【unity实战】时间控制 昼夜交替 四季变化 天气变化效果
    最终效果文章目录最终效果日期季节控制时间昼夜交替素材如果没有天空盒,需要自己配置新增SkyboxBlendingShader.shader,控制天空盒平滑过渡交替变化下雨下雨粒子效果控制雨一直跟随玩家,但是旋转不跟随控制不同天气源码完结日期季节控制publicclassTimeManager:......
  • Windows编程系列:进程遍历的几种方法
    在应用层下,进程遍历有多种方式,这里介绍几种常用的方式:进程快照、ZwQuerySystemInformation/NtQuerySystemInformation、EnumProcesses函数、WMI等。 在C#中Process类提供了一个GetProcesses()函数,这个函数内部就是调用的NtQuerySystemInformation进行获取。 进程快照这种方......
  • 远程抓包的几种方式
    远程抓包远程抓包环境Linux环境SSH抓包网络转发TCP监听转发TCP直接转发Windows环境网络设备环境远端系统为linux,一般使用tcpdump;远端系统为windows,一般使用tshark(wireshark的命令行版本,包含在wireshark安装包中);近端(分析端)为linux或者windows一般使用wire......
  • php 对接Unity海外广告平台收益接口Reporting API
    今天对接的是Unity广告reportingapi接口,拉取广告收益回来自己做统计。记录分享给大家首先是文档地址,进入到Unity后台就能看到文档地址以及参数:文档地址:https://docs.unity.com/ads/en-us/manual/MonetizationStatsAPI在这里插入图片描述接入这些第三方广告平台,流程基......
  • Html2canvas——图片空白的几种排查解决方案
    问题:用html2canvas生成画布图片,再转成pdf。生成图片时内容结构里的图片显示空白。解决:首先服务器设置图片允许跨域,如阿里云腾讯云配置跨域规则。其次图片设置crossOrigin=“anonymous”,并且拿到图片地址加随机参数如src+‘?v=’+Math.random()防止使用缓存,再者html2canvas......
  • 【Unity】进度条和血条的三种做法
    前言在使用Unity开发的时候,进度条和血条是必不可少的,本篇文章将简单介绍一下几种血条的制作方法。1.使用SliderSlider组件由两部分组成:滑动区域和滑块。滑动区域用于显示滑动条的背景,而滑块则表示当前的数值位置。用户可以通过拖动滑块来改变数值。新建Slider,右键选择UI......
  • unity 设计一个日志系统需要注意什么
    在Unity中设计一个日志系统时,需要注意以下几点:日志级别:为了便于管理和过滤日志,可以为日志系统定义不同的日志级别,例如:Debug、Info、Warning、Error和Fatal。在输出日志时,可以根据当前设置的日志级别来决定是否输出该条日志。日志分类:为了便于查找和分析问题,可以为日志系统定......