【Shader】在unity中实现笔刷功能

效果:

教程链接:传送门:)​​​​​​ 

原理

基本

unityshader可以对材质贴图进行编辑,在在片元着色器中检测到顶点BrushPos小于BrushSize的顶点颜色修改位BrushColor。

笔尖位置发出一条射线,检测碰撞点,将点渲染到贴图上(将笔刷有关信息传入shader)

保存上一帧、当前帧、画布材质,在三者之间进行切换更新。

优化

移速过快会造成点阵距离过大不够流畅,于是在相距大于BrushSize的两个点之间进行插值补足空隙。

Shader

Shader "Brush/MarkPenEffect"
{
	properties{
		_MainTex("Texture",2D) = "white"{}
		_BrushPos("BrushPos",Vector) = (0,0,0,0)
		_BrushColor("Brush Color",Color) = (1,1,1,1)
		_BrushSize("Brush Size",float) = 0.01
	}

		Subshader{
			Tags{"RenderType" = "Opaque"}
			pass {
			CGPROGRAM
				#pragma vertex vert;
				#pragma fragment frag;
		
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值