当前位置: 首页 > news >正文

unity草体渲染方案 GPU Instaning

有一天看项目里的FrameDebug发现在森林系的场景里草体的drawcall差不多有100多
请添加图片描述
主要是因为灯光贴图,位置等不一样导致的打断合批,导致一个批次只能渲染10个左右的草体
之前有了解过unity有接口(Graphics.DrawMeshInstanced)可以把一样的网格,不同的变换一次性绘制出来,这个比较合适草体这种很多相同网格的渲染
如果一次性渲染500个草体 那不是就几个drawcall就能搞定,相差几十倍的drawcall还是很有必要处理一下
并且还能优化掉obj的消耗,场景的obj越多,各种遍历肯定会越耗时
直接上对比

性能对比

例子1

修改前:请添加图片描述
修改后:请添加图片描述
修改前:
Drawcall 331, 主线程15.4ms, 渲染线程9.4ms, 65FPS
修改后:
Drawcall 304, 主线程13.1ms, 渲染线程7.5ms, 76FPS
成果:
Drawcall 下降27, 主线程下降2.3ms, 渲染线程下降1.9ms,上升11 FPS

例子2请添加图片描述

修改前:
Drawcall 719 主线程20.3ms 渲染线程14.9ms 49FPS
修改后:
Drawcall 603 主线程15.0ms 渲染线程9.3ms 66FPS
成果:
Drawcall 下降116, 主线程下降5.3ms, 渲染线程下降5.6ms,上升17 FPS

并且这还是没做lod的情况 如果加上lod 还能再降一点

表现优化

在这里插入图片描述
可以看到这个草体变白了,因为在做这个草体渲染的同时我还把草体融入了地形,.优化了表现,注意看草体和地形的接触点,画面表现优化,看起来自然很多,优化前看起来非常出戏(需要美术手动调草体材质,不仅费时,而且效果也不会很好),优化后像是地里长出来的,再给几张明显一点的图
融地形前:请添加图片描述
融地形后:请添加图片描述

同时优化草体的灯光图和AO问题:

草体直接用融地形的颜色,直接去掉草体的灯光烘焙,优化了灯光图,间接解决了草体的AO问题,美术烘焙草体的时候不需要AO,只想要接收阴影,现做法是在草下加灯光,非常费劲

相关文章:

unity草体渲染方案 GPU Instaning

有一天看项目里的FrameDebug发现在森林系的场景里草体的drawcall差不多有100多 主要是因为灯光贴图,位置等不一样导致的打断合批,导致一个批次只能渲染10个左右的草体 之前有了解过unity有接口(Graphics.DrawMeshInstanced)可以把…...

最近在西安召开的学术会议:EI检索超快,信息系统与计算技术领域!

第十二届信息系统与计算技术国际会议(ISCTech 2024)将于2024年11月8日-11月11日在中国西安盛大举行,由长沙理工大学主办,同济大学、西北工业大学联合协办。会议聚焦信息系统与计算技术等相关研究领域,广泛邀请国内外知…...

sRGB和伽马矫正

sRGB和伽马矫正 1. sRGB的含义: sRGB是一种色彩空间,全称为“标准红色-绿色-蓝色”(standard Red Green Blue)。它由惠普和微软在1996年共同开发,用于确保不同设备上色彩的一致性。 在sRGB中,“s”代表“…...

Summer School science communication project--Laptop Selection Suggestion

目录 Introduction Audiance Usage CPU What is a central processing unit (CPU) Notable makers of CPUs GPU Graphics Card: GPU The classifications of graphics cards The brands of graphics cards Dedicated Graphics Cards GeForce MX Series: GeForc…...

网络编程概念详解模拟回显客户端服务器

目录 1.网络中重要的概念 1)IP地址: 2)端口号: 3)协议 协议分层 OSI七层模型(教科书) TCP/IP五层模型 封装和分用 网络套接字 面试题:TCP/UDP的区别? UDP数据报套接字编程 模拟一个回…...

代码随想录第二十四天|动态规划(8)

目录 LeetCode 300. 最长递增子序列 LeetCode 674. 最长连续递增序列 LeetCode 718. 最长重复子数组 LeetCode 1143. 最长公共子序列 LeetCode 1035. 不相交的钱 LeetCode 53. 最大子序和 LeetCode 392. 判断子序列 总结 LeetCode 300. 最长递增子序列 题目链接&#…...

编程-设计模式 3:单例模式

设计模式 3:单例模式 定义与目的 定义:单例模式确保一个类只有一个实例,并提供一个全局访问点来访问该实例。目的:这种模式通常用于那些需要频繁访问且只需一个实例的对象,例如配置管理器、日志记录器等。 实现示例…...

Kaniko 构建 Docker 镜像

Kaniko 主要用于构建 Docker 镜像,而不是运行程序。它的主要用途是从 Dockerfile 构建容器镜像,但它并不负责运行容器或程序。以下是 Kaniko 的主要功能和局限性: 主要功能 构建镜像:Kaniko 从 Dockerfile 构建容器镜像。它通过…...

Javascript常见算法(每日两个)

合并两个有序链表 在JavaScript中,合并两个有序链表通常指的是将两个已经按照某种顺序(如升序或降序)排列的链表合并成一个新的有序链表。由于JavaScript本身不直接支持链表数据结构,我们通常会用对象或数组来模拟链表的行为。但…...

Spring -- 事务

Spring中事务的操作分为两类:(1)编程式事务 – 手动写代码操作事务(2)声明式事务 – 利用注解开启事务和提交事务 1. 编程式事务 准备Controller RestController RequestMapping("/user") public class UserInfoController {Autowiredprivate UserInfoService use…...

生命密码的破译者:AI如何学会读懂DNA语言?

引言 如果能像解读一本神秘的书籍那样,理解DNA的“语言”,将是多么令人兴奋的科学突破!如今,这正在逐步变为现实。科学家们训练出的AI模型GROVER正如一个勤奋的学生,学习着DNA的每一个“单词”和“语法”,…...

大数据信用报告查询哪家平台的比较好?

相信在搜索大数据信用的你,已经因为大数据信用不好受到了挫折,想详细了解一下自己的大数据信用,但是找遍了网络上的平台之后才发现,很多平台都只提供查询服务,想要找一个专业的平台查询和讲解很困难。下面本文就为大家…...

Java高级Day24-集合最后补充

75.HashTable 基本介绍: 存放元素的健值对 即K-V hashtable的键和值都不能为null,否则会抛出NullPointerException hashtable使用方法基本上和HashMap一样 hashtable是线程安全的,hashmap是线程不安全 扩容机制: 底层有数组…...

C++入门:C语言到C++的过渡

前言:C——为弥补C缺陷而生的语言 C起源于 1979 年,当时 Bjarne Stroustrup 在贝尔实验室工作,面对复杂软件开发任务,他感到 C 语言在表达能力、可维护性和可扩展性方面存在不足。 1983 年,Bjarne Stroustrup 在 C 语言…...

了解MVCC

概念 MVCC,全称Multi-Version Concurrency Control,即多版本并发控制,是一种并发控制的方法,维护一个数据的多个版本,使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个非阻塞读功能。MVCC的具体实现…...

WPF自定义控件的应用(DynamicResource的使用方法)

1 DynamicResource的使用方法 可以在字典文件 的抬头区写入数&#xff1a; <SolidColorBrush x:Key"PrimaryBackgroundColor" Color"#FFABAdB3"/><SolidColorBrush x:Key"TextBox.MouseOver.Border" Color"#FF7EB4EA"/>&l…...

Postgresql数据库密码忘记的解决

当您忘记PostgreSQL数据库的密码时,可以通过以下步骤来重置密码。这些步骤在Windows和Linux操作系统上大体相同,但具体操作路径和命令可能有所不同。 步骤一:找到并修改pg_hba.conf文件 定位安装目录: Windows:通常在PostgreSQL的安装目录下的data文件夹中。Linux:位置可…...

Flink SQL 基础操作

Flink SQL是建立在Apache Flink之上的SQL处理引擎&#xff0c;它允许用户以SQL的方式处理流数据和批数据。以下是一些Flink SQL的基础操作&#xff1a; 一、环境准备 1.启动flink集群 ./start-cluster.sh启动sql-client ./sql-client.sh二、数据源定义 创建表&#xff08;…...

海思AE模块Lines_per_500ms参数的意义

​ 基础知识 1秒(S)1000毫秒(ms)1000_000微妙(s)1000_000_000纳秒(ns) 1GHz1000Mhz1000_000KHz1000_000_000Hz 1Hz1/s 抗频闪原理 海思AE模块参数中有一个LinesPer500ms的参数&#xff0c;意思为500ms对应的曝光行数。此个参数和抗频闪有关。 我们知道&#xff1a; 50HZ…...

【代码随想录】区间和——前缀和方法

本博文为《代码随想录》学习笔记&#xff0c;原文链接&#xff1a;代码随想录 题目 原题链接&#xff1a;58. 区间和&#xff08;第九期模拟笔试&#xff09; 题目描述 给定一个整数数组 Array&#xff0c;请计算该数组在每个指定区间内元素的总和。 输入描述 第一行输入为…...

免费终极指南:使用memtest_vulkan快速检测GPU显存稳定性问题

免费终极指南&#xff1a;使用memtest_vulkan快速检测GPU显存稳定性问题 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan memtest_vulkan是一款基于Vulkan计算AP…...

mPLUG模型隐私保护展示:本地化部署的数据安全优势

mPLUG模型隐私保护展示&#xff1a;本地化部署的数据安全优势 1. 数据安全新选择&#xff1a;本地化部署的价值 在当今数据驱动的时代&#xff0c;隐私保护已经成为企业和个人用户最关心的问题之一。传统的云端AI服务虽然方便&#xff0c;但用户数据需要上传到第三方服务器&a…...

云优化 SEO 软件的内容优化功能有哪些

云优化 SEO 软件的内容优化功能有哪些 在当今的数字化时代&#xff0c;网站的流量和排名直接关系到企业的知名度和市场竞争力。而在这其中&#xff0c;云优化 SEO 软件的内容优化功能起到了至关重要的作用。云优化 SEO 软件的内容优化功能具体有哪些呢&#xff1f;本文将详细探…...

OpenClaw性能对比:千问3.5-9B与其他模型实测

OpenClaw性能对比&#xff1a;千问3.5-9B与其他模型实测 1. 测试背景与实验设计 去年冬天第一次接触OpenClaw时&#xff0c;我就被它的本地化执行能力吸引。作为一个经常需要处理敏感数据的开发者&#xff0c;能够在本机完成自动化任务而不依赖云端服务&#xff0c;确实解决了…...

千问3.5-2B部署教程(低成本GPU方案):单卡24GB显存跑通开源VL模型实录

千问3.5-2B部署教程&#xff08;低成本GPU方案&#xff09;&#xff1a;单卡24GB显存跑通开源VL模型实录 1. 千问3.5-2B模型介绍 千问3.5-2B是Qwen系列中的小型视觉语言模型(VL)&#xff0c;它能够同时理解图片内容和处理自然语言。这个模型特别适合那些需要在有限硬件资源上…...

FPGA/CPLD开发实战:基于Verilog的数字逻辑设计避坑指南

FPGA/CPLD开发实战&#xff1a;基于Verilog的数字逻辑设计避坑指南 1. 从理论到实践的鸿沟&#xff1a;硬件工程师的必经之路 刚接触FPGA/CPLD开发的工程师常常会遇到这样的困惑&#xff1a;明明仿真结果完全正确&#xff0c;但下载到硬件后却出现各种异常。这种理论与实践的差…...

AIVideo在软件测试领域的应用:自动化生成测试案例视频

AIVideo在软件测试领域的应用&#xff1a;自动化生成测试案例视频 1. 引言&#xff1a;测试视频制作的痛点与机遇 作为一名测试工程师&#xff0c;你是否曾经遇到过这样的困境&#xff1a;每次编写完测试用例后&#xff0c;还需要花费大量时间录制演示视频&#xff0c;展示测…...

Phi-4-mini-reasoning vLLM部署避坑指南:日志排查、加载失败诊断与修复步骤

Phi-4-mini-reasoning vLLM部署避坑指南&#xff1a;日志排查、加载失败诊断与修复步骤 1. 模型简介与环境准备 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型&#xff0c;专注于高质量、密集推理的数据&#xff0c;并进一步微调以提高更高级的数学推理能力。…...

ClassGraph构建时扫描:Android注解处理的完整解决方案

ClassGraph构建时扫描&#xff1a;Android注解处理的完整解决方案 【免费下载链接】classgraph An uber-fast parallelized Java classpath scanner and module scanner. 项目地址: https://gitcode.com/gh_mirrors/cl/classgraph ClassGraph是一个超高速并行化的Java类…...

Linux下C/C++高效调试工具与技巧全解析

1. Linux终端下C/C调试工具演进史作为一名长期在Linux环境下开发C/C程序的老兵&#xff0c;我深刻理解调试工作对开发效率的影响。很多人对GDB的印象还停留在原始的命令行界面&#xff0c;实际上经过多年发展&#xff0c;终端下的调试工具已经形成了完整的生态体系。从最基础的…...