Cg入门20:Fragment shader - 片段级模型动态变色(实现汽车动态换漆)

Unity 一个面片的最大顶点数为65524,所以大于这个数,请拆分成多个面片
1.获取汽车x轴的最大值和最小值[-2.5,2.5]+R

surfaceShader 语法

surf :surface shader的方法名
vert :使用顶点程序方法名

surface shader 方法不能有返回值


源代码:
Shader "Sbin/SurfaceShader" {
	Properties {
		_Glossiness ("Smoothness", Range(0,1)) = 0.5
		_Metallic ("Metallic", Range(0,1)) = 0.0

		_UpColor("UpColor",color) = (1,0,0,1)
		_DownColor("DownColor",color) = (0,1,0,1)
		_Center("Center",range(-0.7,0.7)) = 0
		_R("R",range(0,0.5)) = 0.2
	}
	SubShader {
		Tags { "RenderType"="Opaque" }
		LOD 200
		
		CGPROGRAM
		#pragma surface surf Standard vertex:vert fullforwardshadows
		//说明:pragma surface method1 Standard vertex:method2	fullforwardshadows
		
		#pragma target 3.0

		sampler2D _MainTex;

		struct Input {
			float2 uv_MainTex;
			float x:TEXCOORD0;
		};

		half _Glossiness;
		half _Metallic;

		float4 _UpColor;
		float4 _DownColor;
		float _Center; 
		float _R; 

		void vert(inout appdata_full v,out Input o){
			o.uv_MainTex = v.texcoord.xy;
			o.x = v.vertex.x;
		}

		void surf (Input IN, inout SurfaceOutputStandard o) {
			fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
			o.Albedo = c.rgb;
			o.Metallic = _Metallic;
			o.Smoothness = _Glossiness;
			o.Alpha = c.a;

			float d = IN.x - _Center;//融合带
			float s = abs(d);
			d = d/s;//正负值分别描述上半部分和下半部分,取值1和-1

			float f = s/_R;	//范围>1:表示上下部分;范围<1:表示融合带
			f = saturate(f);
			d *= f;//表示全部[-1,1];范围>1:表示上部分;范围<1:表示融合带;范围<-1:表示下部分
				
			d = d/2+0.5;//将范围控制到[0,1],因为颜色值返回就是[0,1]
			o.Albedo += lerp(_UpColor,_DownColor,d);
		}
		ENDCG
	}
	FallBack "Diffuse"
}

效果:

详细概述:        从2018年开始虚拟现实、增强现实、混合现实(VR/AR/MR)技术已经被国家正式列入重点发展产业目录。由中国通信工业协会协同地方政府主办,国内各大企业与高校积极参与的《世界VR产业大会暨第某届中国国际通信电子产业博览会》每年都会大约10月中旬在南昌市举办,所以未来的数年将是虚拟现实技术大发展的时期。              本教学视频课程从企业真实虚拟现实项目中提取核心技术要点,总结必须开发功能要素,全面而细致的讲解虚拟现实之汽车模拟仿真项目中需要开发的各个功能模块、开发要点等。 本作从项目环境搭建、汽车零部件素材导入、汽车零部件模拟拆卸、主摄像机旋转与缩进控制、部件灵活运转算法、部件颜色喷漆、汽车模拟导航、多摄像机镜头处理、项目整体音频音量控制、项目UI设计等方面,给出详细的解决方案。              本课程的细致学习将有助于虚拟现实企业高薪就业与优秀VR项目的高水平研发之目的。 一、热更新系列(技术含量:中高):A:《lua热更新技术中篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Potter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值