效果如视频中所示:https://www.bilibili.com/video/BV15i4y1E7ZZ/
参考教学视频:https://www.bilibili.com/video/BV1Mb411i7WQ
实现思路不复杂,依赖一个C#脚本和两个shader,一个隐式shader,一个显示shader。
思路:
1.用C#脚本,在玩家的两个脚底向平面打射线,得到射线碰撞点UV的位置。
2.得到了UV坐标,在隐式shader中,在该点绘制脚印,返回到C#脚本。
3.C#脚本,将绘制的贴图,给到显示shader的高度图,即可得到效果,显示shader是HDRP自带的曲面细分。
以下是C#脚本,隐式shader用来绘制脚印贴图,显示shader是HDRP自带的LitTessellation。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DrawWithMouse : MonoBehaviour
{
//public Camera _camera;
public Shader _drawShader;
private RenderTexture _splatmap;
private Material _snowMaterial, _drawMaterial;
private RaycastHit _hit;
public Transform footL;
public Transform footR;
public float footCheckDis = 0.1f;
void Start()
{
_drawMaterial = new Material(_drawShader);
_drawMaterial.SetVector("_Color", Color.white);
_snowMaterial = GetComponent<Renderer>().material;
_splatmap = new RenderTexture(1024, 1024, 0, RenderTextureFormat.ARGBFloat);
_snowMaterial.SetTexture("_HeightMap", _splatmap);
_snowMaterial.SetTexture("_BaseColorMap", _splatmap);
SetWhite();
//_snowMaterial.SetColor("_EmissionColor",Color.red);
}
void Update()
{
FootDrawSnowTrack();
}
void

博客展示了一个效果视频及参考教学视频,介绍了实现特定效果的思路。该实现依赖一个C#脚本和两个shader,通过C#脚本向平面打射线获取UV位置,在隐式shader绘制脚印,再将贴图给到显示shader的高度图,最终得到效果。
最低0.47元/天 解锁文章
1740

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



