生草shader的几种方法总结

2023-10-27

草地shader一直是shader效果的热门主题,实现草地效果,结合了集合绘制,顶点动画,光照很多shader编程的技巧,这里总结一下我在网上查到博客的几种实现方案。

我居然拖了一年还没有写完,woc,反正也没有人看,先发一个。


第一位是chenjd,一位中国博主,提供了一个完整项目和中英说明博客,详细介绍了自己的方法。
他先使用GeometryShader绘制出草的Mesh,这需要在代码中计算每个草节点的顶点和UV。
他做的草是长方形,然后通过一个alpha贴图控制草的外形。
然后通过一张高度图,画了一个地形,地形的每个顶点都要计算。
然后在每个顶点上产生草根的位置,在每个草根的位置上产生一根草。

博客教程:利用GPU实现无尽草地的实时渲染 - 慕容小匹夫 - 博客园

GitHub地址:https://github.com/chenjd/Realistic-Real-Time-Grass-Rendering-With-Unity


第二位IronWarrior,他提供了一个完成项目和一个英文教程。他还提供了卡通水的教程,很有价值。
他写了一个很好的教程博客,你可以按照他的指导一步一步完成。
他也使用GeometryShader,绘制草,他绘制的草就是草的形状。

博客教程:Unity Grass Shader Tutorial - Roystan

GitHub地址:GitHub - IronWarrior/UnityGrassGeometryShader: Source code for Grass Shader tutorial for Unity. Generates blades with a geometry shader, tessellates input mesh to control density.


第三位是ColinLeung-NiloCat,是一位二次元大佬。
他提供了一个完整项目,该项目是在URP上实现的,他使用DrawMeshInstancedIndirect()绘制,表现出很好的性能。草地基于相机裁剪,草地可以和人物互动怎么画的还需要研究

Github地址:https://github.com/ColinLeung-NiloCat/UnityURP-MobileDrawMeshInstancedIndirectExample


 第四位是WalkingFat,他提供了一个博客,包含demo试玩和代码,但是不能拷贝代码。
他的方案应该是最简单的,但是效果很好,草地可以和人物互动。
他的草是独立的mesh,提前做好的。人物坐标通过C#输入shader,然后草地做出对应效果。

博客地址:http://walkingfat.com/dynamic-grass-%e5%8a%a8%e6%80%81%e8%8d%89%e5%9c%b0%e5%88%b6%e4%bd%9c/


最后一位是,一个油管大佬,提供了一套基于URP的教程视频,但是没有提供项目。
视频详细讲解了GeometryShader,ComputeShader以及使用他们来绘制草地
他通过多种方式实现草地,包括shadergraph,可以全面了解草地模拟这个技术。

youtube地址:https://www.youtube.com/watch?v=JDpt9xYaUYc

相信通过以上的教学内容,你可以制作出自己的生草shader

Compute shader

ComputeShader把本该CPU的处理高并行处理任务转移到GPU,在特定任务上更高效,如用来生成贴图或者模拟数据。
GPU有数百个线程而且容易实现多线程
computeShader由HLSL或CG写成,由C#脚本dispatch(),执行。
ComputeBuffers显卡上的一块显存,用来在CPUGPU之间传递数据
Data流向:C#Script->SourceGeometryBuffer->ComputerShader->DrawGeometeyBuffer->
GraphicsShader->Screen

Geometry shader

Gshader运行在顶点着色器之后,片元着色器之前,Gshader可以增删改顶点着色器的三角面数据。
GeometryShader不能在苹果设备上运行,相比之下,computeShader的性能更好。

生艹的过程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生草shader的几种方法总结 的相关文章

  • UE4 解决景深效果闪烁问题

    原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
  • Unity-AR 简介

    Unity AR 简介 现有Unity AR Sdk ARKit 苹果推出的AR开发平台 ARCore Google 推出的增强现实 SDK ARFoundation ARFoundation是ARKit XR插件和ARCore XR插件
  • Unity之获取游戏物体对象或组件的几个方法

    文章目录 前言 通过物体名称获取对象 GameObject Find Transform Find 通过物体标签获取对象 GameObject FindWithTag GameObject FindGameObjectWithTag Gam
  • Unity与Android的Back键冲突解决

    Unity与Android的Back键冲突解决 上一篇的最后留下了两个问题 Unity视图下横屏闪退 Unity视图下Android无法响应back返回上一activity 对于第一个问题 应该是Unity横屏下视图的某些设置跟Androi
  • GooglePlay提审警告(com.google.android.gms:play-services-safetynet:17.0.0)

    1 Goole在今年6月份出的新政策 不在使用safetynet 而使用Play Integrity API 2 项目本身没有使用过safetynet 3 使用了firebase 查阅资料 解决方案如下 implementation pla
  • unity中创建询问弹出窗口

    在开发过程中进程会遇到需要弹出一个窗口询问用户是否进行的操作 今天就来制作一个这样弹出窗口 然后根据弹出窗口的选择内容不同进行不同的操作 本例中主要是为了删除一个数据 而在删除数据操作前需要得到用户的一个确认操作 这里面主要用到了Notif
  • Unity学习笔记(一)—— 基础知识

    一 基础知识 1 开发团队组成 2 unity特点 图形界面 所见即所得 入门简单 支持C 比OC C 更友好 js 国内外资源丰富 因为使用的人多 跨平台性好 PC端 移动端等 对VR AR的支持最完善 3 成功案例 游戏 炉石传说 神庙
  • 【IMGUI】 各种辅助类 EditorGUIUtility、EditorUtility、GUIUtility、GUILayoutUtility

    EditorGUIUtility class in Editor 继承自 GUIUtility EditorGUI 的各种辅助程序 EditorGUIUtility currentViewWidth 我尝试打印了下这个值和position
  • VLC for unity 插件如何使用

    VLC for unity 插件如何使用 先去下载一个VLC播放器 安装完成后 然后导入插件链接https download csdn net my 这个插件我的另一个上传资源里有 或者到商店去下载 这个插件链接下载完是一个txt文档 里面
  • unity 性能查看工具Profiler

    文章目录 前言 profiler工具介绍 菜单栏 帧视图 模块视图 模块详细信息 通过profiler分析优化游戏性能 最后 前言 每次进行游戏优化的时候都用这个工具查看内存泄漏啊 代码优化啊之类的东西 真的好用 但是之前也就是自己摸索一下
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B
  • mixamo根动画导入UE5问题:滑铲

    最近想做一个跑酷游戏 从mixamo下载滑铲动作后 出了很多动画的问题 花了两周时间 终于是把所有的问题基本上都解决了 常见问题 1 动画序列 人物不移动 2 动画序列 人物移动朝向错误 3 蒙太奇 人物移动后会被拉回 4 蒙太奇 动画移动
  • unity小球跟随音乐节奏放大缩小和改变颜色

    放在小球身上 设置对应组件即可 using System Collections using System Collections Generic using Unity VisualScripting using UnityEngine
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • U3D游戏开发中摇杆的制作(UGUI版)

    在PC端模拟摇杆 实现玩家通过控制摇杆让玩家移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine using Unity
  • U3D游戏开发中摇杆的制作(NGUI版)

    在PC端模拟摇杆 实现控制摇杆让玩家或者物体移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine public clas
  • 游戏开发常见操作梳理之NPC任务系统

    多数游戏存在任务系统 接下来介绍通过NPC触发任务的游戏制作代码 using System Collections using System Collections Generic using UnityEngine
  • 游戏开发常见操作梳理系列之——玩家信息的显示系统

    在游戏中 有不少游戏在左上角会出现玩家的头像和等级以及血量 这就是玩家的信息显示系统 那么这些是如何制作的呢 接下来我将讲讲代码的操作 其它操作我会在其它笔记中一一说明 敬请期待 信息的显示相当简单就是控制一些UI 然后在其它系统里面填写相
  • 游戏开发常见操作梳理之NPC药品商店系统(NGUI版)

    后续会出UGUI Json的版本 敬请期待 游戏开发中经常会出现药品商店 实际操作与武器商店类似 甚至根据实际情况可以简化设置 废话不多说 直接上代码 药品商店的源码 using System Collections using Syste

随机推荐

  • 超详细Git 安装教程(Windows)

    Git 安装教程 windows 给新电脑安装下git 顺便记下笔记 安装版本为2 30 2 git下载地址 https git scm com download win 下载后点击即可进行安装 下面是具体安装步骤 1 许可申明 点击 Ne
  • element-ui table 对数据进行处理后渲染

    html 在需要处理的列上加formatter自定义函数 如下 对票号进行后8位截取
  • 在GitHub上搭建Hexo个人博客

    文章目录 概述 准备工作 安装Git 安装Node js 安装Hexo 执行安装命令 初始化网站 生成默认网页 启动本地预览服务 修改主题 部署到GitHub 配置免密SSH登陆 创建个人主页仓库 绑定个人域名 可选 上传Hexo生成的博客
  • 一个超简单的反编译任务(IDAPro、X32dbg)

    一个超简单的反汇编任务 所需工具 IDAPro X32dbg Visual C 6 0 实验步骤 首先 我们新建一个简单的程序并编译运行 这里笔者建立了一个弹窗程序 运行结果如下 进行IDA逆向分析 我们可以通过空格键来切换视图 这时可以看
  • 微信小程序中使用计算属性

    微信小程序中使用计算属性 在小程序开发中 它的基本原理和vue是大同小异 但是有的时候就是因为这小异造成很多不必要的麻烦 在小程序开发中 改变数据更新视图用的是Page prototype setData方法 遇到一些复杂数据逻辑判断时 代
  • STM32_中断系统_概述

    1 中断的基本概念 2 NVIC 嵌套向量控制器 中断及异常向量表 3 中断优先级 1 中断的基本概念 1 1处理器中的中断 在处理器中 CPU正在执行某一段代码时遇到内部或者外部的紧急事件需要处理 暂停当前执行的代码 转而去处理紧急事件
  • React中jsx或tsx的switch语句使用

    React中jsx或tsx的switch语句使用 gt switch case case 1 return break case 2 return break
  • SRM系统选择哪种部署方式?

    传统线下采购模式存在过程不透明 合规性差 沟通效率低且采购成本高等痛点 随着互联网技术不断发展 国内以阿里云 腾讯云 华为云为代表的丛多互联网企业都提供了上云基础服务 IAAS 各种SaaS管理软件也逐渐被中国企业接受 在此背景下 近几年不
  • Qt自定义控件的使用教程

    自定义的控件无非是继承自Qt的某个类自定义的一个类 常用的是继承自QWidget类 在Qt可视化编程中 可视化编程有两种方式 第一种 使用常规的方法 创建一个该类的对象 然后加入到布局管理器中 show一下就可以看到效果了 第二种 Qt D
  • mysql innodb flush_MySQL Config--参数innodb_flush_method

    延迟写 传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存 大多数磁盘I O都通过缓冲进行 当将数据写入文件时 内核通常先将该数据复制到其中一个缓冲区中 如果该缓冲区尚未写满 则并不将其排入输出队列 而是等待其写满或者当内核需要重用
  • 第七课,OpenGL之LookAt函数

    观察空间 通过给定摄像机位置 摄像机焦点 摄像机顶部分向量 可得到摄像机的固定位置 glm lookAt cameraPos cameraFocus cameraUp LookAt函数提供了这种计算 把这个LookAt矩阵作为观察矩阵可以很
  • 【C++】序

    1 数据类型 C 中有许多和C语言相似的数据类型 例如int char double 等等的数据类型 这些数据类型的使用和性质与C语言也大同小异 但在C 中也存在很多不同于C语言的数据类型 1 字符串类型 在C语言中 没有单独的字符串类型
  • 统计正数和负数的个数然后计算这些数的平均值)编写二个程序来读入不指定个数的整数,然后决定已经读取的整数中有多少个正数和多少个负数并计算这些输入值(不统计0)的总和,最终得出它们的平均值。这个程序以输入

    positives 0 negatives 0 sum 0 while True num int input Enter a number if num 0 break elif num gt 0 positives 1 正数个数 else
  • Java程序员必须要了解的七个开源协议介绍

    1 Mozilla Public License MPL License 允许免费重发布 免费修改 但要求修改后的代码版权归软件的倡议者 这种授权维护了商业软件的利益 它要求基于这种软件得修改无偿贡献 版权给该软件 这样 围绕该软件得所有代
  • c++ map 结构体作为key关键词

    c map 结构体作为key关键词 结构体的定义 这里的结构体是三个值 int x int y int label 当三个值作为 值时 你需要重新定义它的对比操作operator 这样才能对map进行查找操作 数据结构声明 并且对key的查
  • 在做课设时,用到的一个创建作业功能

    再做一个图书借阅系统的课设时 因为需要在数据库里实时更新某个人当前借阅图书的逾期天数 需要每次打开电脑都获取当前日期 再减去应还书日期 当时一直想不到一个很好的解决方法 然后在网上查了些资料 说是要用到sql server 创建作业的办法
  • Python实现自动化办公

    人工智能 AI 是当今世界最为热门的话题之一 而Python是从事AI领域最为流行的编程语言 在本文中 我将介绍如何使用Python实现自动化办公和处理工资表等知识教程 帮助您从零入门人工智能Python 一 制作Excel可视化报表 在传
  • 使用Jmeter进行性能测试

    文章目录 一 性能测试 性能测试介绍 性能指标QPS 每秒查询率 性能指标TPS 每秒处理的事务数目 QPS和TPS的不同点 二 Jmeter性能测试案例 三 Jmeter性能测试结果分析 1 如何得到可靠的测试报告 2 运行实际负载测试时
  • php苹果内购验证,苹果内购凭据验证工具(苹果支付,苹果内购,凭据解析)

    use sn01615 iap ios Verify include vendor autoload php cc new Verify receipt 凭据 cc gt endpoint true 可选 切换到沙盒环境 cc gt set
  • 生草shader的几种方法总结

    草地shader一直是shader效果的热门主题 实现草地效果 结合了集合绘制 顶点动画 光照很多shader编程的技巧 这里总结一下我在网上查到博客的几种实现方案 我居然拖了一年还没有写完 woc 反正也没有人看 先发一个 第一位是che