首先是单一的使用ShaderGraph的方法,其截图如下:

这个方法的问题是当摄像机与平面的角度越垂直效果越好,如果摄像机与平面较为平行,线条会闪烁。
为了解决这个问题,决定采用GL的方式绘制线条,脚本内容如下:
using UnityEngine;
using UnityEngine.Rendering;
public class Grid : MonoBehaviour
{
[SerializeField]
Color color = new Color(1, 1, 1, 0.5f);
[SerializeField]
[Range(1, 1000)]
float range = 20;
[SerializeField]
[Range(0.1f, 100)]
float interval = 1;
[SerializeField]
[Range(0, 500)]
float focusDistance = 3;
[SerializeField]
[Range(1, 500)]
float fadeLength = 50;
[SerializeField]
Material mat;
void Start()
{
if (!mat) mat = new Material(Shader.Find("Hidden/Grid"));
}
void OnEnable()
{
RenderPipelineManager.endCameraRendering += EndCameraRendering;
}
void O

这篇博客介绍了如何使用ShaderGraph和GL方法在Unity3D中绘制3D网格线。作者首先展示了ShaderGraph在特定视角下线条闪烁的问题,然后提供了一个GL渲染线条的解决方案,通过脚本在相机渲染后期绘制稳定无闪烁的网格。博客还包括了相关Shader的代码片段,并在最后提到目前未发现明显问题,计划继续使用。
2079

被折叠的 条评论
为什么被折叠?



