热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UnityShader搬砖日志ShaderGraph快速出原型,然后手撸shader还原,转换到BRP/URP使用

文章目录效果实现优化SG布局还原手撸Shader需要和ParticleSystem有蒙版交互考虑自适应问题ProjectReferences首先,美术同学在网上找了一


文章目录

  • 效果实现
  • 优化 SG 布局
  • 还原手撸 Shader
  • 需要和 ParticleSystem 有蒙版交互
  • 考虑自适应问题
  • Project
  • References



首先,美术同学在网上找了一些效果: ShaderGraph第09节_血球
但是美术同学,始终无法得到最终想要的效果,于是乎,让我帮忙还原 Shader Graph 效果




效果实现

为了方便参考视频的实现方式(实现方式有多种多样,为了快速让美术用上想要的效果,我就快速的喵了一下视频),就按照视频中大概的意思思路来实现,并且视频使用的是u3d 2018 版本,所以我也使用了一个 2018 版本的 SG 来连连看

第一个 U3D 2018 SG
在这里插入图片描述

GIF 效果图
请添加图片描述

嗯,效果是实现了,但是编辑过程中,这个低版本的 SG 优化确实不到位,编辑时卡卡的
而且节点布局什么的都不太便于维护



然后美术同学说,他不想要圆形的水瓶,好,那么再修改一丢丢(SG还是卡卡的)
在这里插入图片描述

GIF效果图
请添加图片描述




优化 SG 布局

美术同学说,他看 SG 会头晕,完全看不懂
我和他说,这是临时快速连线实现的
所以再次对 SG 布局优化,变添加上备注(我和他说,正式项目就算是 原型的 SG 也得是良好得布局,不然后续修改,就难以理解了)

为了更快速得编辑 SG ,我使用了高版本的 U3D 2020.3.18
速度上确实比之前的快了不少
优化后的布局如下
在这里插入图片描述

比如放大某个节点:可以清晰的看到节点关系,还有大概这组节点的作用,还有实现的思路,都会备注十分清晰
在这里插入图片描述
在这里插入图片描述

于是给到美术同学,他仍然看不懂,我说急不来,有空先看官方节点文档
然后他又嫌 unity SG 英文文档看着不方便,-_-~
所以我推荐他直接去 B站看中文的视频案例
(不过,还好,花了大概几天时间,他终于有所了解了)




还原手撸 Shader

这位美术同学的项目是 BRP 下的
所以就算 SG 直接导出的 shader 代码,你直接优化写法,也是无法直接再 BRP 使用的,毕竟 shader 库不同了(因为我编辑的这个 shader 是基于 URP的, shader lab 里面都是 include 到 URP 的 shader 库)

所以我直接再 BRP 项目中,直接按照节点的方式手撸一遍 shader 即可

翻译手撸 shader 时,遇到一个 BRP 项目中不存在的 node 时,可以逐个 ctrl+c, v 过来
如下
在这里插入图片描述
然后直接翻译后续节点的 shader 即可




需要和 ParticleSystem 有蒙版交互

当我移植到 BRP 项目后
美术同学说,还想给这些液体的部分像素内才显示 ParticleSystem
所以我再给手撸的 BRP Shader 和 ParticleSystem 使用到的 Shader 都添加Stencil
最终效果如下:
请添加图片描述




考虑自适应问题

因为这时 2D UI 上的效果

那么直接应用在 UGUI 上再适合不过

所以直接将 手撸的 BRP Shader 按照 BRP BuiltIn Shader : "UI/Default" Shader 调整好需要的数据

就可以方新的应用再 UGUI 上了

在这里插入图片描述

水平、垂直居中
在这里插入图片描述
GIF
请添加图片描述
请添加图片描述



OK,从 SG 到 优化,投入到各种 渲染管线,然后落地(这里面我还没优化性能 – 后话)
这么一期搬砖的内容就这么结束了,后续如果有相关 SG 移植到其中管线,都可以如何处理即可




Project


  • Test_WaterBottle2D_BRP_U3D_2018_2_11f1.unitypackage
  • Test_URP_SG_BloodBottle_2021_3_1f1



References


  • ShaderGraph第09节_血球

推荐阅读
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 基于机器学习的人脸识别系统实现
    本文介绍了一种使用机器学习技术构建人脸识别系统的实践案例。通过结合Python编程语言和深度学习框架,详细展示了从数据预处理到模型训练的完整流程,并提供了代码示例。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 我有一个SpringRestController,它处理API调用的版本1。继承在SpringRestControllerpackagerest.v1;RestCon ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • CSS高级技巧:动态高亮当前页面导航
    本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
  • 本文介绍两道有趣的编程问题:一是寻找给定数字n的连续数字序列及其个数,二是模拟一个翻杯子的游戏。同时附带一道智商题供读者思考。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • MySQL 基础操作与优化
    本文详细介绍了 MySQL 的基础连接、数据库及表的操作,涵盖创建、修改、删除等常用命令,并深入解析了数据类型、列属性、索引、外键和存储引擎等内容。 ... [详细]
  • This post discusses an issue encountered while using the @name annotation in documentation generation, specifically regarding nested class processing and unexpected output. ... [详细]
  • 本文介绍了如何使用暴力方法解决HDU5444问题。代码通过逐个检查输入数据,确保在所有情况下都能找到正确的解决方案。 ... [详细]
author-avatar
花亜_277
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有