服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - Unity屏幕雪花另类实现方式示例

Unity屏幕雪花另类实现方式示例

2022-08-07 11:52海洋_ C#

这篇文章主要介绍了Unity屏幕雪花另类实现方式示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

今天是圣诞节平安夜,为此特别制作了一个雪花飘落的场景,我们的雪花渲染方式不同于网上流行的使用camera filter,需要将脚本挂接到相机上面,而我们是挂接到空对象上面,实现方式采用的是自定义mesh,自定义mesh可以帮助我们实现很多的效果,而且对效率的提升非常有帮助,雪花实现方式分为:c#脚本和shader渲染,c#负责雪花的生成,shader负责雪花的飞舞和渲染。下面我们介绍实现方式:

关于unity,每帧可渲染65000顶点,表示雪的网状物每1片雪花使用4个顶点,65,000 / 4 = 1,6250,这也是你可以一次画的雪数量。

自定义mesh,我们需要这两个参数:雪花数量,雪花的范围,另外实现自定义mesh需要如下几个参数:存放雪花顶点,雪花的三角形索引,雪花uv,最后我们需要meshrender帮助我们渲染。首先我们针对定义的参数如下所示:

Unity屏幕雪花另类实现方式示例

变量定义好了,接下来的工作就是初始化了,我们的初始化工作只需要做一次,因此在start函数中完成的。下面我们根据定义的变量逐步将他们填充起来,先完成雪花顶点的生成如下所示:

Unity屏幕雪花另类实现方式示例

顶点有了,再来填充索引,代码如下所示:

Unity屏幕雪花另类实现方式示例

索引有了,下面就是uv了,再看看uv的实现方式:

Unity屏幕雪花另类实现方式示例

顶点,索引,uv定义好了后,下面就是写自定义雪花mesh了,将我们已经实现的顶点,索引,uv一次性的赋给我们的mesh,如下所示:

Unity屏幕雪花另类实现方式示例

到这里,我们的自定义mesh就完成了,我们还需要对mesh进行渲染,这个就用到了我们的shader了,雪花是飘动的而且还需要材质,雪花位置的变化我们在顶点着色器中实现,这个也是重点,而片段着色器只是做了简单的渲染,核心代码如下所示:

Unity屏幕雪花另类实现方式示例

剩下的是在c#中,使用cpu对gpu中定义的shader传值,shader中定义了以下变量:

Unity屏幕雪花另类实现方式示例

这些变量需要在c#中完成对它们的传值操作,因为需要每帧去执行,我们将其放在了lateupdate中完成,代码如下所示:

Unity屏幕雪花另类实现方式示例

这样我们的雪花制作就完成了,我们将代码挂到自己新建的空对象上面,注意这里不是相机上,实现效果如下:

Unity屏幕雪花另类实现方式示例

我们的雪景出现了,但是效果不是特别好,渲染力度不够,为此我将其加上,景深,雾效,bloom渲染,再看看效果如下所示:

Unity屏幕雪花另类实现方式示例

效果明显加强了,图中的鹿是给大家送祝福了,祝愿开发者技术更上一层楼,就写到这里吧,代码后面整理一下传上来,供参考,晚安各位。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/jxw167/article/details/85238951

延伸 · 阅读

精彩推荐
  • C#C# 函数覆盖总结学习(推荐)

    C# 函数覆盖总结学习(推荐)

    下面小编就为大家带来一篇C# 函数覆盖总结学习(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    C#教程网11762021-11-22
  • C#OpenXml读取word内容的实例

    OpenXml读取word内容的实例

    下面小编就为大家分享一篇OpenXml读取word内容的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    *飞*7762022-02-16
  • C#C#实现简单过滤非法字符实例

    C#实现简单过滤非法字符实例

    这篇文章主要介绍了C#实现简单过滤非法字符的方法,涉及C#针对字符串遍历与判断的相关技巧,非常简单实用,需要的朋友可以参考下...

    一只小青蛙9452021-11-04
  • C#C#类的多态性详解

    C#类的多态性详解

    这篇文章主要为大家详细介绍了C#类的多态性,主要有两种:一是编译时的多态性,二是运行时的多态性,具有一定的参考价值,感兴趣的小伙伴们可以参...

    IT_xiao小巫10042021-10-29
  • C#C# 实例化接口对象的方法

    C# 实例化接口对象的方法

    下面小编就为大家带来一篇C# 实例化接口对象的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    C#教程网11632021-12-27
  • C#c#进程之间对象传递方法

    c#进程之间对象传递方法

    本文主要介绍了c#进程之间对象传递的方法。具有很好的参考价值。下面跟着小编一起来看下吧...

    楚人无衣8012021-12-30
  • C#c#快速写本地日志方法

    c#快速写本地日志方法

    下面小编就为大家分享一篇c#快速写本地日志方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    思明10422022-02-19
  • C#C#直线的最小二乘法线性回归运算实例

    C#直线的最小二乘法线性回归运算实例

    这篇文章主要介绍了C#直线的最小二乘法线性回归运算方法,实例分析了给定一组点,用最小二乘法进行线性回归运算的实现技巧,具有一定参考借鉴价值,需要...

    北风其凉8922021-10-18