Unity的渲染管线

渲染管线

概念

Unity的渲染管线是在图形学渲染管线的基础上,加上了高度可配置可扩展的框架,允许开发者自定义渲染流程。

渲染管线(渲染流水线)概述:将数据阶段的变为屏幕图像的过程。

  • 数据指的是模型、光源和摄像机等内容的顶点、纹理、光照等数据。

  • 阶段:应用阶段—>几何阶段—>光栅化阶段

    image-20240617175319915

CPU和GPU

  • CPU:中央处理器,负责逻辑处理。
  • GPU:图形处理器,搭载在显卡上,负责渲染逻辑处理。

图元

在渲染管线中,图元是几何数据的基本单元,是构成几何体的最小可绘制单元。

图元可以是点、线、三角形,在几何阶段,顶点数据会被组合成图元。

这些图元将在光栅化阶段转换为像素,最终呈现在屏幕上。

像素

像素组成图像的最小可控单位。

具有位置和属性,用于表示颜色和其他信息。

二维图像中的一个点,每个像素都占据屏幕的固定位置。

片元

片元是光栅化阶段生成的像素或像素片段。

片元是渲染管线中进行像素级别操作和计算的基本单位。

其实片元就是像素加上了一些其他信息,如颜色、深度值、法线等。

应用阶段

概述:CPU将渲染数据传递给GPU,用于后两个阶段的处理。

应用阶段CPU为渲染准备了什么?

  1. 剔除不可见(相机外)的物体数据。
  2. 准备好模型相关的数据,如顶点、法线、切线、贴图、着色器等。
  3. 把数据加载到显存中。显存就是显卡的专用内存,用来存储显卡芯片处理过或者即将提取的渲染数据。
  4. 设置渲染状态,如网格需要使用哪个着色器、材质、光源属性等。
  5. 调用DrawCall,DrawCall就是CPU通知GPU用上面准备的数据和渲染状态进行渲染的命令。

image-20240614210459107

应该尽可能避免多的DrawCall

因为它会影响性能。每次调用DrawCall,CPU就会给GPU发送大量的内容,效率就慢了,可能会造成卡顿。

怎么减少呢?批处理技术

  • 将多个静态物体的网格合并为一个网格,变为一次DrawCall。
  • 使不同网格使用同一种材质。
  • 合并图集:将多张图片合并成一张大图。(2D游戏和UI中常用)

几何阶段

几何阶段是GPU主导的阶段,它的主要工作为:顶点处理、坐标转换、裁剪画面外图元

概述:在几何阶段,我们主要通过自定义顶点着色器阶段,带来不同的画面表现效果。

image-20240617171522020

顶点着色器:是完全可编程的,进行一些操作就能带来如水波纹、布料等表现效果。

image-20240617172841403

image-20240617172937407

光栅化阶段

GPU主导,确定片元是否被渲染,并且确定片元的最终渲染颜色效果等。

我们主要通过自定义片元着色器阶段,带来如水面、火焰、黑白或模糊等效果。

image-20240617174032679

  • 三角形设置:计算三角形网格的表示数据,人话就是把顶点连成三角形。

  • 三角形遍历:检查哪些像素被三角形网格覆盖了,覆盖就生成为一个片元,最终获得片元序列。

    • image-20240617175824695
  • 片元着色器(可编程):

    • image-20240617175937464
  • 逐片元操作(输出合并阶段,可配置):

    • image-20240617180058393

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/31806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『FPGA通信接口』LVDS接口(4)LVDS接收端设计

文章目录 1.LVDS接收端概述2逻辑框图3.xapp855训练代码解读4.接收端发送端联调5.传送门 1.LVDS接收端概述 接收端的传输模型各个属性应该与LVDS发送端各属性一致,例如,如果用于接收CMOS图像传感器的图像数据,则接收端程序的串化因子、通道个…

最新版ChatGPT对话系统源码 Chat Nio系统源码

最新版ChatGPT对话系统源码 Chat Nio系统源码 支持 Vision 模型, 同时支持 直接上传图片 和 输入图片直链或 Base64 图片 功能 (如 GPT-4 Vision Preview, Gemini Pro Vision 等模型) 支持 DALL-E 模型绘图 支持 Midjourney / Niji 模型的 Imagine / Upscale / Variant / Re…

springboot 搭建一个 测试redis 集群连通性demo

背景&#xff1a;我需要用 springboot 建一个测试 redis 集群连通性的 demo 废话不多说直接上代码&#xff1a; 1.pom </dependency><!-- Spring Boot Starter Data Redis --><dependency><groupId>org.springframework.boot</groupId><arti…

【for循环】最大跨度

【for循环】最大跨度 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 【参考代码】 #include <iostream> using namespace std; int main(){ int n;int max 0, min 100;cin>>n;for(int i1; i<n; i1){int a;cin>>a;if(a>max){max a;}i…

VTABLE 基本表和透视表的分页功能

基本表和VTable数据分析透视表支持分页&#xff0c;但透视组合图不支持分页。 配置项&#xff1a; pagination.totalCount&#xff1a;数据项的总数。数据透视表中的VTable字段将被自动补充&#xff0c;以帮助用户获取数据项的总数。pagination.perPageCount&#xff1a;显示每…

STM32通过SPI硬件读写W25Q64

文章目录 1. W25Q64 2. 硬件电路 3. 软件/硬件波形对比 4. STM32中的SPI外设 5. 代码实现 5.1 MyI2C.c 5.2 MyI2C.h 5.3 W25Q64.c 5.4 W25Q64.h 5.5 W25Q64_Ins.h 5.6 main.c 1. W25Q64 对于SPI通信和W25Q64的详细解析可以看下面这篇文章 STM32单片机SPI通信详解-C…

Java宝藏实验资源库(8)多态、抽象类和接口

一、实验目的 理解面向对象程序的基本概念。掌握类的继承和多态的实现机制。熟悉抽象类和接口的用法。 二、实验内容、过程及结果 **1.Using the classes defined in Listing 13.1, 13.2, 13.3, write a test program that creates an array of some Circle and Rectangle in…

轨道地铁智能录音无线通信解决方案

一、行业背景 随着社会经济和通信行业的迅速发展&#xff0c;电话已成为企业运作中必不可少的联络手段。但电话作为即时沟通手段&#xff0c;往往无法进行事后追溯和复盘&#xff0c;容易造成不必要的麻烦。尤其在交通轨交行业领域&#xff0c;对语音工作的发生过程更需要有个…

System.getProperty()方法总结

System.getProperty()方法总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;System.getProperty()方法是Java中用于获取系统属性的方法之一。它允许我们访问J…

SpringCloud微服务框架的原理及应用详解(二)

本系列文章简介&#xff1a; 随着云计算、大数据和物联网等技术的飞速发展&#xff0c;企业应用系统的规模和复杂度不断增加&#xff0c;传统的单体架构已经难以满足快速迭代、高并发、高可用性等现代业务需求。在这样的背景下&#xff0c;微服务架构应运而生&#xff0c;成为了…

Java中的JVM、JRE和JDK有什么区别?

在Java中&#xff0c;JVM、JRE和JDK是三个密切相关但功能不同的组件。 JVM是Java虚拟机的缩写&#xff0c;是一种软件实现的抽象计算机。它的主要作用是执行Java字节码&#xff08;Bytecode&#xff09;&#xff0c;使得Java程序能够在不同的操作系统和硬件上运行而不需要重新…

全栈人工智能工程师:现代博学者

任何在团队环境中工作过的人都知道&#xff0c;每个成功的团队都有一个得力助手——无论你的问题性质如何&#xff0c;他都能帮助你。在传统的软件开发团队中&#xff0c;这个人是一个专业的程序员&#xff0c;也是另一种技术的专家&#xff0c;可以是像Snowflake这样的数据库技…

基于STM8系列单片机驱动74HC595驱动两个3位一体的数码管

1&#xff09;单片机/ARM硬件设计小知识&#xff0c;分享给将要学习或者正在学习单片机/ARM开发的同学。 2&#xff09;内容属于原创&#xff0c;若转载&#xff0c;请说明出处。 3&#xff09;提供相关问题有偿答疑和支持。 为了节省单片机MCU的IO口资源驱动6个数码管&…

数据分析的Excel基础操作

数据透视表 1.先备份&#xff0c;创建原数据副本&#xff0c;将副本sheet隐藏掉。 2.看数据的量级&#xff0c;总行和总列。 3.浏览数据的字段和数值&#xff0c;大致看一下有无异常 4.找到插入->数据透视表&#xff0c;不选择默认点击确认创建&#xff0c;随意点击数据透视…

CAC 2.0融合智谱AI大模型,邮件安全新升级

在数字化时代&#xff0c;电子邮件的安全问题日益成为关注的焦点。Coremail CACTER邮件安全人工智能实验室&#xff08;以下简称“CACTER AI实验室”&#xff09;凭借其在邮件安全领域的深入研究与创新实践&#xff0c;不断推动技术进步。 此前&#xff0c;CACTER AI实验室已获…

日常工作记录目录

SpringBoot篇 10. 全局异常处理与自定义异常 700. 方法返回值缓存 800. 前端数据基础校验 900. 定时任务 1000. Execl数据导入 EasyExcel实现 2000. 二维码下载与前端展示 二维码下载与展示 <

docker进阶篇

docker进阶篇 (重点) 1、docker run2、docker ps3、docker restart4、docker pull5、docker stop6、docker logs7、docker stats8、docker rm(重点) 9、docker exec10、查看本机镜像docker image11、发布镜像docker commit12、docker save(例如保存为tar给别人用)13、删除镜像1…

深信服2024笔试

一 &#xff1a;服务器 小明是一名公司的IT运维工程师&#xff0c;负责管理公司的IT系统。公司总共有两个配置相同的服务器A和B&#xff0c;各运行了若干个服务。现在小明发现两台服务器上运行的服务占用的内存总和不相等(假设每个服务占用内存是-个恒定正整数)&#xff0c;打…

【2024最新精简版】网络_Linux操作系统面试篇

文章目录 简述 tcp 和 udp的区别&#xff1f;get 和 post 请求有哪些区别&#xff1f;常用HTTP请求方式有哪些 ?进程跟线程的区别&#xff1f;僵尸进程&#xff1f;IO的多路复用&#xff1f;虚拟内存什么是OSI模型说一说HTTP协议说一说HTTPS协议HTTPS协议和HTTP协议有什么区别…

C语言 | Leetcode C语言题解之第172题阶乘后的零

题目&#xff1a; 题解&#xff1a; int trailingZeroes(int n) {int ans 0;while (n) {n / 5;ans n;}return ans; }