【UnityShader入门精要】【总结记录】【第二章-1】

news2024/11/25 16:28:08

在这里插入图片描述

☀️博客主页:CSDN博客主页
💨本文由 萌萌的小木屋 原创,首发于 CSDN💢
🔥学习专栏推荐:面试汇总
❗️游戏框架专栏推荐:游戏实用框架专栏
⛅️点赞 👍 收藏 ⭐留言 📝,如有错误请指正
📆 未来很长,值得我们全力奔赴更美好的生活✨
------------------❤️分割线❤️-------------------------

在这里插入图片描述Unity 小科普

老规矩,先介绍一下Unity的科普小知识:​​​

Unity 是行业领先的实时3D开发平台。
包括游戏开发,电影,AR/VR,虚拟现实在内的所有创作者,可以将梦想照进现实。
Unity提供了一套完整完善的软件解决方案,可用于创作,运营和模拟任何2D和3D的内容,进本全平台支持。
实际上Unity就是一个游戏引擎,大名鼎鼎的原神就是用它制作的。


我是小狼君

    • @[TOC](我是小狼君)
  • 什么是流水线
    • 好处
  • 什么是渲染流水线
  • 总览三阶段
    • 应用阶段(CPU)
    • 几何阶段(GPU上)
    • 光栅化阶段(GPU上)
  • 细化三阶段
    • 应用阶段
      • 把数据加载到显存中
      • 设置渲染状态
      • 调用Draw Call
    • 几何阶段
      • 顶点着色器
      • 曲面细分着色器
      • 几何着色器
      • 裁剪
      • 屏幕映射
    • 光栅化阶段
      • 主要两个目标
      • 三角形设置和三角形遍历
      • 片元着色器
      • 逐片元操作

什么是流水线

每个步骤专人完成,工序1完成后交付工序2,工序1不停,继续制作,互相之间不干预。

好处

可以提高单位时间的生产量

什么是渲染流水线

  • 可以直接套用流水线概念,同样使用计算机的图像渲染。
  • 渲染流程分为3个阶段:应用阶段,几何阶段,光栅化阶段

总览三阶段

应用阶段(CPU)

  • 首先,准备好场景数据,如摄像机位置,视锥体,场景中模型
  • 其次,为了提高渲染性能,需要做一些粗粒度剔除,把不可见物体剔除
  • 最后,设置好每个模型的渲染状态,包括但不限于使用的材质,纹理,shader等
  • 最重要的就是输出渲染所需要的几何信息,即渲染图元。

几何阶段(GPU上)

  • 处理所有和我们要绘制的几何相关的事情,比如绘制的图元,怎么绘制
  • 重要任务就是把顶点坐标变换到屏幕空间
  • 这一阶段将会输出屏幕的二维顶点坐标,顶点的深度值,着色相关

光栅化阶段(GPU上)

  • 使用上个阶段传递的数据产生屏幕上的像素,并渲染最终的图像
  • 对逐顶点数据进行插值,然后再进行逐像素处理

细化三阶段

应用阶段

把数据加载到显存中

所有数据加载到系统内存,然后再加载到显存中,因为大多数显卡没有对RAM(系统内存)直接访问的权力,而且显卡对于显存的访问速度更快

设置渲染状态

这些状态定义了场景中的网格是怎样被渲染的,如何使用哪个顶点,片元着色器,光源属性,材质等

调用Draw Call

是一个命令,发起方是CPU,接收方是GPU,这个命令仅仅会指向一个需要被渲染的图元列表,不会包含任何材质信息,定了一个Draw Call,GPU会根据渲染状态和所有输入的顶点数据来计算。

几何阶段

顶点着色器

完全可编程,通常用于实现顶点的空间变换,顶点着色功能

曲面细分着色器

可选着色器,用于细分图元

几何着色器

可选着色器,执行逐图元的着色操作

裁剪

将不在摄像机视野内的顶点裁剪掉,并剔除某些三角图元的面片,该阶段可配置

屏幕映射

不可配置和编程,负责把每个图元的坐标转换到屏幕坐标系中

光栅化阶段

主要两个目标

计算每个图元覆盖了哪些像素,为这些像素计算它们的颜色

三角形设置和三角形遍历

固定函数阶段

片元着色器

完全可编程,实现逐片元操作

逐片元操作

修改颜色,深度缓冲,进行混合,不可编程,很高的可配置性

在这里插入图片描述

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

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

相关文章

使用 Access SQL 插入、更新和删除表格记录

参考链接 使用 Access SQL 插入、更新和删除表格记录 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/office/vba/access/concepts/structured-query-language/insert-update-and-delete-records-from-a-table-using-access-sql 将记录插入表格 基本上有两种方法可以向…

client-go架构与原理介绍

个人博客 一、架构展示 client-go 库中的各种组件架构如下图所示: 二、目录结构 client-go 是用 Golang 语言编写的官方编程式交互客户端库,提供对 Kubernetes API server 服务的交互访问。 其源码目录结构如下: . ├── discovery …

再识openmmlab,用mmDeploy实现部署的前期需要了解一些内容

OpenMMLab 是一个用于学术研究和工业应用的开源算法体系,于2018年年中开始,由 MMLab(香港中文大学多媒体实验室)和商汤科技联合启动。 如果第一接触的话,还是建议参考官方环境配置教程:Windows 环境配置 -…

Midjourney万能高清咒语,真正的近看也美

明明我都拿人家的图垫图了,为什么质量还是很差? 明明别人都把咒语分享出来了,为什么质量还是很差? 今天我们就来解决这两个问题,看到就是缘分,点点手指来个小心心不过分吧,哈哈 什么你在怀疑我的…

Spring Boot + ElasticSearch实战之CRUD及多数据源配置

概述 本文记录工作中使用Spring Boot ElasticSearch的实战&#xff0c;Spring Boot版本&#xff1a;2.1.6.RELEASE。 基础 Spring Boot已是Java开发标配&#xff0c;使用SB提供的starter&#xff0c;简单高效。 配置 引入依赖&#xff1a; <dependency><groupI…

Rocketmq如何保证消息不丢失

如果想要保证消息不丢失就要知道&#xff0c;消息可能出现丢失得地方。 1.producer发送消息 2.Broker存储消息 3.Consumer消费消息 4.Broker主从切换 下面一共有9个维度可以保证消息不丢失。 目录 维度一&#xff1a;同步发送 维度二.异步发送 维度三.刷盘策略 维度四…

数据库期末复习(2)

关系数据库 图1 上图为思考题1的答案 \d student #查看完整性约束 模式和实例 关系的模式:关系有哪些、关系又什么类型、关系的约束时什么&#xff0c;一般来说关系的模式一般比较稳定&#xff0c;不会随着动态的变化而变化。 关系的实例:关系的实例一般随着变化的次数比较…

体验 InsCode AI,原来 AI 也扛不住互联网黑话

CSDN AI写作助手上线了&#xff01;InsCode AI 创作助手不仅能够帮助用户高效创作文章&#xff0c;而且能够作为对话式AI回答你想知道的问题。成倍提高生产力&#xff01;以下是我的体验分享 一、你平时会使用这类AI工具吗&#xff1f;你对这类型的工具有什么看法&#xff1f;…

RPC(2):RPC简介

1 RFC RFC(Request For Comments) 是由互联网工程任务组(IETF)发布的文件集。文件集中每个文件都有自己唯一编号&#xff0c;例如&#xff1a;rfc1831。目前RFC文件由互联网协会(Internet Society&#xff0c;ISOC)赞助发行。 RPC就收集到了rfc 1831中。可以通过下面网址查看…

微信小程序websocket使用protobuf,发送arraybuffer

❤️砥砺前行&#xff0c;不负余光&#xff0c;永远在路上❤️ 目录 前言一、如何在小程序websocket中使用 Protobuf 发送buffer二、使用过程遇到的坑&#xff08;版本问题&#xff09;1、需要注意下Protobuf版本 使用 protobufjs6.8.6最好&#xff0c;我在使用的时候安装7.多 …

1_7后端优化

后端优化是指将一段时间内相机所有关键帧的位姿、内参、每个点3维坐标作为参数进行优化&#xff0c;得到最优的内、外参&#xff1b;利用的方法主要是Bundle Adjustment。 所谓Bundle Adjustment可以理解为从任意特征点发射出来的几束光线&#xff0c;它们会在几个相机的成像平…

寄存器-汇编复习(2)

通过阅读本文小节内容&#xff0c;可以清楚的明白汇编承接的能力和机器语言&#xff0c;高级语言之间的表达关系。文中虽然讨论16位cpu&#xff0c;最新的64或以后的128理论都一样的&#xff0c;类推就好了。 继续将 通用寄存器-汇编复习(1)_luozhonghua2000的博客-CSDN博客 …

很多人打商标的主意,悄悄埋伏

很多人在打商标的主意&#xff0c;等着抢劫呢 等你的品牌结了果实&#xff0c;然后出手勒索 趣讲大白话&#xff1a;鬼子进村&#xff0c;打枪的不要 【趣讲信息科技183期】 **************************** 有些公司申请几千件商标 有公司一个月申请100件 春江水暖贼先知 有一条…

WSL2网络配置

WSL2越来越好用了&#xff0c;但是在windows下使用clash时&#xff0c;配置WSL2的网络很麻烦&#xff0c;通常使用设置环境变量export ALL_PROXY"http://127.0.0.1:8000"的方式有很大的弊端&#xff0c;例如pip和conda就不会走代理。 经过我亲身体验&#xff0c;最好…

基于小脑模型神经网络的轨迹跟踪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

模拟退火算法(附简单案例及详细matlab源码)

作者&#xff1a;非妃是公主 专栏&#xff1a;《智能优化算法》 博客地址&#xff1a;https://blog.csdn.net/myf_666 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录 专栏推荐序一、概论二、物理退火1. 加温…

MyBatis - CRUD 操作

文章目录 1.环境配置1.1 导入相关依赖1.2 基本配置1.3 数据模型 2.基于 XML 开发2.1 创建 Mapper 接口2.2 创建 XML 映射文件2.3 insert2.4 select2.5 delete2.6 update2.7 编写单元测试 3.基于注解开发3.1 常用注解3.2 创建 Mapper 接口 MyBatis 支持通过 XML 和注解两种方式来…

chatgpt赋能python:Python运行程序没反应怎么办?

Python运行程序没反应怎么办&#xff1f; Python作为一种高级编程语言&#xff0c;已经成为了很多开发者的首选语言。然而&#xff0c;在使用Python编写程序时&#xff0c;有时候会出现运行程序却没有任何反应的情况。这是什么原因导致的呢&#xff1f;本文将为大家介绍Python…

单例模式的饿/懒汉模式

目录 1. 什么是单例模式2. 饿汉模式2.1 饿汉模式概念2.2 饿汉模式代码 3. 懒汉模式3.1 懒汉模式概念3.2 单线程情况下的懒汉模式3.3 单例模式的写法(保证线程安全) 4. wait 和 sleep 的区别 1. 什么是单例模式 保证某个类在程序中只存在一份实例&#xff0c;而不会创建多个实例…

Apache Kafka - 跨集群数据镜像 MirrorMaker

文章目录 概述跨集群数据镜像的原理MirrorMaker配置小结 概述 在分布式系统中&#xff0c;数据镜像是一项重要的功能&#xff0c;它可以将数据从一个集群复制到另一个集群&#xff0c;以保证数据的高可用性和容错性。Apache Kafka是一个流处理平台&#xff0c;它提供了一种跨集…