原理,c#传入UV坐标,shader实现映射采样叠加原图。只实现基本功能,如果需要加法线等效果需要扩展。
C#代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MarkControl : MonoBehaviour
{
Material material;
// Start is called before the first frame update
void Start()
{
material = transform.GetComponent().material;
}

// Update is called once per frame
void Update()
{if(Input.GetKeyDown(KeyCode.Mouse0)){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hit;if(Physics.Raycast(ray,out hit, 1000)){Vector2 uv = hit.textureCoord;float x = uv.x % 1;if (x < 0)x = 1 + x;float y = uv.y % 1;if (y < 0)y = 1 + y;material.SetVector("_MarkPos",new Vector4(x,y));Debug.Log("x = " + x);Debug.Log("y = " + y);material.SetFloat("_MarkStrength",1);}}
}

}
shader代码如下:
Shader “Unlit/Mark”
{
Properties
{
_MainTex (“Texture”, 2D) = “white” {}
_MarkTex(“Mark”,2D) = “black” {}
_MarkPos(“MarkPos”,Vector)=(0,0,0,0)
_MarkStrength(“MarkStrength”,Range(0,1)) = 0
}
SubShader
{
Tags { “RenderType”=“Opaque” }
LOD 100

    Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag// make fog work#pragma multi_compile_fog#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};sampler2D _MainTex;float4 _MainTex_ST;sampler2D _MarkTex;fixed4 _MarkPos;fixed _MarkStrength;v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);return o;}fixed4 frag (v2f i) : SV_Target{fixed4 col = tex2D(_MainTex, i.uv);fixed2 uRange = fixed2(_MarkPos.x - 0.1, _MarkPos.x + 0.1);fixed2 vRange = fixed2(_MarkPos.y - 0.1, _MarkPos.y + 0.1);fixed markU = (i.uv.x- uRange.x)/(0.2);fixed markV = (i.uv.y - vRange.x)/(0.2);fixed2 markUV = fixed2(markU,markV);_MarkStrength *= (i.uv.x >= uRange.x);_MarkStrength *= (i.uv.x <= uRange.y);_MarkStrength *= (i.uv.y >= vRange.x);_MarkStrength *= (i.uv.y <= vRange.y);fixed4 markCol = tex2D(_MarkTex,markUV) * _MarkStrength;return fixed4(col.rgb + markCol.rgb * markCol.a,col.a);}ENDCG}
}

}

Unity shader弹痕,脚印做法(理论实现,实际应用要考虑很多问题),个人分享,欢迎交流相关推荐

  1. 《Unity Shader入门精要》 第五章 开始学习Unity Shader之旅 笔记

    开始学习Unity Shader之旅 最简单的片元着色器 #pragma vertex vert #pragma fragment frat 告诉Unity那个函数包括顶点着色器的代码,哪个函数包括片 ...

  2. 【Unity Shader】(六) ------ 复杂的光照(上)

    笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题.              [Unity Sha ...

  3. 【Unity Shader】屏幕后处理3.0:均值模糊和高斯模糊

    发现之前学习记录的太过详细,导致整理的过程占用太长的时间了,这篇之后博客重要的是掌握实现过程,关于基础的理论会更多的放上别人写得更好的文章. 参考:[Unity Shader编程]之十五 屏幕高斯模糊 ...

  4. 【我的书】Unity Shader的书 — 目录(2016.5.19最后一次更新)

    写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shad ...

  5. 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

    写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shad ...

  6. unity shader学习---光照模型(二)

    更复杂的光照 效果图 理论 unity的光源类型 unity的渲染路径 在这里插入图片描述 实验 多光源 阴影 不透明物体的阴影 让物体接收阴影 统-管理光照衰减和阴影 透明度物体的阴影 代码 多光源 ...

  7. 第四章 开始Unity Shader学习之旅(1)

    1. 一个最简单的顶点/片元着色器 现在,我们正式开始学习如何编写Unity Shader,更准确的说是,学习如何编写顶点/片元着色器 2.顶点/片元着色器的基本结构 我们在以前已经讲过了Unity ...

  8. 学习Shader Unity Shader 基础

    1.如何充分利用 Unity Shader 来为我们的游戏增光添彩? 材质和 Unity Shader: 在Unity中,我们需要配合使用材质(Material)和 Unity Shader 才能达到 ...

  9. 《Unity Shader入门精要》笔记01 前言

    <Unity Shader入门精要>笔记01 前言 --本系列是基于人民邮电出版社<Unity Shader入门精要>(冯乐乐著 )的自学Unity Shader笔记,如果您发 ...

最新文章

  1. 计算机视觉分析:传统视觉VS深度学习
  2. 论文简述 | 融合关键点和标记的基于图优化的可视化SLAM
  3. 伤感网络验证系统_可验证云数据库架构与设计
  4. linux多网卡bind发送数据,Linux系统多网卡绑定实战
  5. Linxu嵌入式汇编语言
  6. ITK:两个图像的平方差
  7. data中的数据如何在innerhtml中调用_Vuex中调用state数据
  8. [渝粤教育] 西南科技大学 高级语言程序设计(Java) 在线考试复习资料
  9. java每日小算法(10)
  10. c++求n的几次方_14.八年级数学:若a+b+c=1,怎么求 a+b+c的值?分式培优拓展
  11. ByteArrayOutputStream和ByteArrayInputStream的简单使用
  12. Java设计模式学习总结(8)——结构型模式之桥接模式
  13. matlab着重标出某个点,MATLAB与数学实验讲义资料.doc
  14. 现代通信原理:期中考试答案
  15. Egg.js框架的简单使用
  16. 刷脸支付为人们消费方式创始一个新纪元
  17. zedgraph控件使用
  18. 关于java8 List转map 分组顺序重排问题
  19. Google 搜索知识
  20. Crossplane 和 Terraform 的区别

热门文章

  1. 二维前缀和(矩形割补法)——杨子曰算法
  2. vis-network绘制拓扑图
  3. xv6---Lab3: page tables
  4. 批处理bat Windows脚本实现获取本机所有MAC地址
  5. win7系统开机黑屏无任何图标的解决方法
  6. for循环语法以及range函数
  7. 10部男生必看经典电影
  8. 理解mobx @computed、autorun、get函数
  9. 网上购物系统(毕业设计)
  10. 装mysql没有反应慢_MySQL反应慢的排查思路(老叶)