Unity Shader(五)创建渐变纹理来控制漫反射着色

博客介绍了使用渐变纹理图的操作流程,首先要准备一张渐变纹理图,接着编写Shader代码,然后将代码添加到材质球并绑定渐变纹理,最后把该材质球添加到物体上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备一张渐变纹理图,类似:

编写代码:

Shader "Custom/BasicDiffuse"
{
	Properties
	{
		_EmissiveColor("Emissive Color",color) = (1,1,1,1)
		_AmbientColor("Ambient Color",color) = (1,1,1,1)
		_MySliderValue("This is a Slider",Range(-5,5)) = -1
		_RampTex("Ramp Texture",2D) = ""
	}

	SubShader
	{
		Tags{"RenderType" = "Opaque"}
		LOD 200

		CGPROGRAM
		#pragma surface surf BasicDiffuse

		float4 _EmissiveColor;
		float4 _AmbientColor;
		float _MySliderValue;
		sampler2D _RampTex;

		struct Input 
		{
			float2 uv_MainTex;
		};

		void surf(Input IN,inout SurfaceOutput o)
		{
			float4 c;
			c = pow((_EmissiveColor + _AmbientColor), _MySliderValue);
			o.Albedo = c.rgb;
			o.Alpha = c.a;
		}

		inline float4 LightingBasicDiffuse(SurfaceOutput s, fixed3 lightDir, fixed atten)
		{
			float difLight = max(0, dot(s.Normal, lightDir));
		    //float hLambert = difLight * 0.5 + 0.5;
			float3 ramp = tex2D(_RampTex, float2(difLight, difLight)).rgb;
			float4 col;
			col.rgb = s.Albedo * _LightColor0.rgb * (ramp);
			col.a = s.Alpha;
			return col;
		}
		ENDCG
	}
		FallBack "Diffuse"
}

 

为将Shader代码添加到材质球并绑定渐变纹理

将此材质球添加到物体上

Unity中实现材质球颜色渐变的方法是使用ShaderGraph。ShaderGraph是Unity的一个可视化着色器编辑器,可以通过图形化界面和节点连接来创建自定义的着色器效果。使用ShaderGraph需要一定程度的图形学知识,比如了解顶点、片段着色器的渲染流程以及如何结合Unity的材质编辑器等。 下面是一个基于Unity3D实现渐变颜色的简单脚本的例子,通过ShaderGraph实现材质球颜色渐变效果: ```csharp using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace YourNamespace { public class ColorGradientShader : MonoBehaviour { public Gradient gradient; private Material material; private void Start() { Renderer renderer = GetComponent<Renderer>(); material = renderer.material; } private void Update() { float time = Time.time; // 根据时间来控制渐变颜色的变化 Color color = gradient.Evaluate(time); // 根据渐变的时间来获取对应的颜色 material.color = color; // 将获取到的颜色赋值给材质球的颜色属性 } } } ``` 上述脚本将渐变颜色应用到材质球上,可以通过设置Gradient来定义渐变的颜色。脚本中的Update函数会根据时间来控制渐变颜色的变化,并将获取到的颜色应用到材质球上。使用这个脚本,你可以在Unity创建一个空物体,并将其附加上这个脚本,然后将你想要应用渐变颜色的材质球赋值给该物体的Renderer组件。 需要注意的是,使用ShaderGraph需要安装UnityShaderGraph插件,并且了解如何创建和编辑ShaderGraph图形化界面。同时,还需要编写一些脚本来控制渐变颜色的变化,根据具体需求来进行定制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【Unity Shader】(7)渐变纹理 控制漫反射光照效果 (动漫风、插画风的理论)](https://blog.youkuaiyun.com/weixin_46840974/article/details/124080692)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Unity3D实现渐变颜色效果](https://download.youkuaiyun.com/download/weixin_38713801/13791958)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【unity造轮子】Unity ShaderGraph使用教程与各种特效案例(2023/7/9更新)](https://blog.youkuaiyun.com/qq_36303853/article/details/131376168)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值