Unity ASE制作彩色流光马赛克 像素风 舞池DJ台效果Shader

Unity ASE制作彩色流光马赛克 舞池DJ台效果 Shader@TOC

项目需求想写一个舞池DJ台的效果,尝试写了发现制作出好玩的效果。DJ效果参考
首先想要得到这种棋盘格的效果,想到了马赛克像素平铺,平铺数低就是棋盘格效果,所以需要将UV进行平铺。
通过Floor节点反除获取到一个正方形的平铺棋盘格。在这里插入图片描述

在这里插入图片描述

然后想要把棋盘格随机给上不同的颜色。
这时候想到颜色映射,用一张扰动贴图得到一张有黑白渐变的不规则颜色贴图。
使用ASE自带的Noise节点来当扰动贴图。
我们可以把扰动贴图的颜色信息黑色到白色颜色值从0到1
映射到pS制作的一个彩色渐变图上,在这里插入图片描述

这样的话彩色渐变图的颜色信息就映射到扰动贴图的不同灰度值上,这样我们就得到了一张彩色的纹理图。使用Lerp来将在这里插入图片描述把马赛克的平铺数给多一些就能够看到流光的彩色效果。在这里插入图片描述接下来为我们想让他动起来,这时候我们可以控制扰动贴图的UV偏移,乘以一个Time节点,加一个控制偏移的常量值(速度)这样的话,这张 彩色渐变图就能流动起来了。通过控制扰动贴图的尺寸,我们可以得到不同效果的波纹流动图片。获得到这张彩色渐变流动贴图后我们就可以把他用在各种文字或图片上。比如我制作了一张黑白的文字贴图,添加后就得出了这样的效果。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
怎么样,一个材质就能实现多种的效果。马赛克效果,流动效果,DJ舞台效果。喜欢的点个赞!材质节点图在下方。在这里插入图片描述
在这里插入图片描述

Shader "JJM_PixelsText"
{
   
	Properties
	{
   
		_MainTex("MainTex", 2D) = "white" {
   }
		_Tiling("Tiling", Float) = 0
		_Color("Color ", Color) = (0,0,0,0)
		_TextureSample1("Texture Sample 1", 2D) = "white" {
   }
		_Emission("Emission", Float) = 0
		_Speed("Speed", Float) = 0.06
		_Scale("Scale", Float) = 0.35
		[HideInInspector] _texcoord( "", 2D ) = "white" {
   }

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

		CGINCLUDE
		#
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作迷雾效果Shader 可以使用 Unity Standard Shader,并在其基础上进行修改。以下是迷雾效果Shader 实现方式: 1. 创建一个新的材质并为其指定 Standard Shader。 2. 在 Shader 中添加一个新的 Pass 并设置其渲染顺序,以便将迷雾效果渲染在场景的最后面。 3. 在新的 Pass 中添加一个新的 SubShader,并将其设置为最后一个 SubShader。这是因为 SubShader 的渲染顺序是从上到下的,因此需要将迷雾效果放在最后一个 SubShader 中。 4. 在 SubShader 中添加一个新的 Surface Shader,以便在表面上渲染迷雾效果。 5. 在 Surface Shader 中添加一个新的 Function,用于计算迷雾效果的颜色。该函数需要接收表面颜色和表面法线作为输入,并返回修改后的颜色。 6. 在 Surface Shader 中的函数中,根据表面到摄像机的距离计算出迷雾效果的强度,然后使用该强度调整表面颜色和透明度。 以下是示例代码: ``` Shader "Custom/FogShader" { Properties { _FogColor ("Fog Color", Color) = (1,1,1,1) _FogStart ("Fog Start", Range(0,1)) = 0.2 _FogEnd ("Fog End", Range(0,1)) = 1.0 } SubShader { Tags {"Queue"="Transparent" "RenderType"="Transparent"} Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; }; struct v2f { float4 vertex : SV_POSITION; float3 worldPos : TEXCOORD0; float3 worldNormal : TEXCOORD1; }; float4 _FogColor; float _FogStart; float _FogEnd; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; o.worldNormal = UnityObjectToWorldNormal(v.normal); return o; } float4 frag (v2f i) : COLOR { float fog = saturate((i.worldPos.z - _FogStart) / (_FogEnd - _FogStart)); float4 fogColor = lerp(_FogColor, i.color.rgb, fog); return fogColor; } ENDCG } } FallBack "Diffuse" } ``` 在这个示例代码中,我们使用了一个名为 `_FogColor` 的属性来指定迷雾的颜色,使用 `_FogStart` 和 `_FogEnd` 属性来指定迷雾的起始和结束位置。在 Surface Shader 的 `frag` 函数中,我们计算出了表面到摄像机的距离,并使用该距离来计算迷雾的强度。最后将修改后的颜色返回。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值