Unity Shader之几何着色器(Geometry Shader)实现面片飞散的爆炸效果

前言

上篇文章初学集合着色器实现了草地效果,这篇再次使用GS实现一个“爆炸效果”。为什么要加上引号呢,因为实现的其实不是一个传统的爆炸效果,更类似于面片向外扩散消失的一种科幻效果,其实通过修改面片大小,颜色和扩散方向,还可以模拟复仇者联盟三最后人化为灰烬的效果。
为什么要实现这个效果呢,实际上我最早知道几何着色器是下载了一个K神实现的开源demo,然后看到了一个非常酷炫的传送特效。
传送
当时我第一感受就是“这尼玛也太太太太帅了吧!!!我什么时候也可以写出这种特效??!!”
感谢这是个开源Demo我可以看到其中的源码,我把下载地址提供给大家点我点我。这个网站还有很多同样酷炫的demo可供学习。这个特效其实使用的就是GS,然后通过调整面片的大小方向等来将物体“打碎”成粒子,再将粒子“重组”成物体。其实仔细观察“打碎”这个过程,有一部分图元用来表现传送了,还有一些细小的图元好像是粉末一样向外挥发掉了,我这次实现的就是后者这个效果,传送效果我以后会补上的。

实现

我其实参考大佬代码实现的Demo不是很复杂,直接放上代码吧。

Shader "MyShader/Explosion"
{
   
	Properties
	{
   
		_Color("Color Tint", Color) = (1,1,1,1)
		_Emission1("Emission1", Color) = (1,1,1,1)
		_Emission2("Emission2", Color) = (1,1,1,1)
		_Height("Height", Range(-1.5, 0.5)) = 0
		_TotalHeight("Total Height", Float) = 1
		_Strength("Explosion Strenth", Range(0, 10)) = 2
		_Scale("Scale", Range(0, 5)) = 1
	}
    SubShader
    {
   
        Tags {
    "RenderType"="Opaque"}
		Pass
		{
   
			Tags{
   "LightMode" = "ForwardBase"}
			Cull Off
			 CGPROGRAM
			#pragma vertex vert
			#pragma geometry geom
			#pragma fragment frag
			#include "UnityCG.cginc" 

			struct a2v
			{
   
				float4 vertex : POSITION;
				float3 normal : NORMAL;
			};

			struct v2g
			{
   
				float4 vertex : POSITION;
				float3 normal : NORMAL;
			
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值