渲染流程概述

渲染流程包括 CPU应用程序端渲染逻辑 和 GPU渲染管线

一、CPU应用程序端渲染逻辑

  1. 剔除操作
  2. 对物体进行渲染排序
  3. 打包数据
  4. 调用Shader SetPassCall 和 Drawcall

1.剔除操作

  • 视椎体剔除

    (给物体一个包围盒,利用包围盒和摄像机的视椎体进行碰撞检测,在视椎体外的物体被剔除)

       

  • 层级剔除

      (给物体设置层级标识,利用层级剔除物体)

       

  • 遮挡剔除

     (被遮挡的物体将不会显示渲染在屏幕中)

2.排序操作

  • 渲染队列     (先渲染不透明物体再渲染半透明物体)
  • 不透明队列  (从前到后渲染)
  • 半透明队列  (从后往前渲染)

3.打包视椎体内模型的数据

  • 模型信息 (顶点坐标、法线、UV、顶点颜色、索引列表等)
  • 变换矩阵
  • 灯光、材质参数

      ​​​

  比如一个正方体模型的信息:

      

4.提交数据到GPU端

  • SetPass Call   

      (设置渲染状态,告诉GPU端需要使用哪一个Shader/Pass、混合模式以及背面剔除的设置)

  • Draw Call     

      (CPU调用图像应用编程接口,来命令GPU进行渲染的操作)

引用自DrawCall、Batches、SetPassCalls的区别和联系_setpasscall draw call-CSDN博客

二、GPU渲染

1.顶点Shader阶段

  •     将模型空间顶点转换到裁剪空间下

        (顶点Shader并不会产生2D图像,仅使得场景中的3D图像产生变形的效果)

转换步骤:

2.图元装配以及光栅化阶段

  • 裁剪操作(针对裁剪空间下内外模型的三角面而言,不会直接丢弃整个物体)
  • 将裁剪空间下的模型的顶点坐标转换为标准化设备坐标 (-1,1)
  • 模型的背面剔除
  • 将标准化的设备坐标中的(x,y)转换为屏幕坐标(x,y)

     (以上为对顶点的操作)

  • 图元装配阶段(将各个顶点连接形成封闭的三角图元)
  • 光栅化

3.片元Shader(上色)

  (1)纹理技术
  1. 纹理采样
  2. 纹理过滤机制
  3. Mipmap
  4. 纹理寻址模式
  5. 纹理压缩格式

          纹理过滤机制:

                   为了解决小图像映射到大块区域所产生的失真的情况(如下图锯齿效果)

           

         纹理过滤机制的原理

                   根据周围四个纹素点进行插值计算(双线性插值),生成比较柔和的图像效果

           


         Mipmap:(生成多级渐远贴图)

                   为了解决大图像映射到小块区域时引起图像失真的情况

                 (可以将高级别模糊的图像应用到远处或者小块的区域上)

           

 (2)光照计算
     光照组成

           直接光照、间接光照

     光照模型

            基本的光照框架=直接光漫反射+直接光镜面反射+间接光漫反射+间接光镜面反射

4.输出合并阶段

  • 通过片元Shader输出的数据(例如片元颜色、深度值等)
  • 进行相关的测试(Alpha测试、模版测试、深度测试等)

最后总结:

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

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

相关文章

CF 764B.Timofey and cubes(Java实现)

题目分析 输入n个数字,首尾交换,奇数对换,偶数对不换 思路分析 存入数组,遍历时判断i%20时(数组下标0开始,所以题目分析没有错),对换 代码 import java.util.*;public class Main {public static void ma…

Transformer+vit原理分析

目录 一、Transformer的核心思想 1. 自注意力机制(Self-Attention) 2. 多头注意力(Multi-Head Attention) 二、Transformer的架构 1. 整体结构 2. 编码器层(Encoder Layer) 3. 解码器层(Decoder…

WPS mathtype间距太大、显示不全、公式一键改格式/大小

1、间距太大 用mathtype后行距变大的原因 mathtype行距变大到底怎么解决-MathType中文网 段落设置固定值 2、显示不全 设置格式: 打开MathType编辑器点击菜单栏中的"格式(Format)"选择"间距(Spacing)"在弹出的对话框中调整"分数间距(F…

C# 添加、替换、提取、或删除Excel中的图片

在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观。此外,对于已有图片,你有事可能需要更新图片以确保信息的准确性,或者将Excel 中的图片单独保存,用于资料归档、备…

Python练习(2)

今日题单 吃鱼还是吃肉 PTA | 程序设计类实验辅助教学平台 降价提醒机器人PTA | 程序设计类实验辅助教学平台 幸运彩票 PTA | 程序设计类实验辅助教学平台 猜帽子游戏 PTA | 程序设计类实验辅助教学平台 谁管谁叫爹 PTA | 程序设计类实验辅助教学平台 就不告诉你 PTA | 程…

Formality:黑盒(black box)

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 简介 在使用Formality时,黑盒(black box)的概念很重要,指的是一个其功能未知的设计。黑盒通常用于设计中不可综合的组件,包括RAM…

开源2+1链动模式AI智能名片S2B2C商城小程序:利用用户争强好胜心理促进分享行为的策略研究

摘要:随着互联网技术的快速发展和社交媒体的普及,用户分享行为在企业营销中的作用日益凸显。本文旨在探讨如何利用用户的争强好胜心理,通过开源21链动模式AI智能名片S2B2C商城小程序(以下简称“小程序”)促进用户分享行…

八股学习 微服务篇

微服务篇 常见面试内容Spring Cloud 常见组件注册中心Ribbon负载均衡策略服务雪崩 常见面试内容 Spring Cloud 常见组件 Spring Cloud有5个常见组件: Eureka/Nacos:注册中心;Ribbon:负载均衡;Feign:远程调用;Hystrix/Sentinel:服…

Synology 群辉NAS安装(6)安装mssql

Synology 群辉NAS安装(6)安装mssql 写在前面mssql 2019:成功安装说明,这个最终成功了 mssql 2022没有成功1. pull image2.启动mssql docker container 远程连接 写在前面 mssq是一个重要节点。 这是因为我对mysql没有一丝好感。虽然接触了许…

mysql_init和mysql_real_connect的形象化认识

解析总结 1. mysql_init 的作用 mysql_init 用于初始化一个 MYSQL 结构体,为后续数据库连接和操作做准备。该结构体存储连接配置及状态信息,是 MySQL C API 的核心句柄。 示例: MYSQL *conn mysql_init(NULL); // 初始化连接句柄2. mysql_…

qt-QtQuick笔记之常见项目类简要介绍

qt-QtQuick笔记之常见项目类简要介绍 code review! 文章目录 qt-QtQuick笔记之常见项目类简要介绍1.QQuickItem2.QQuickRectangle3.QQuickImage4.QQuickText5.QQuickBorderImage6.QQuickTextInput7.QQuickButton8.QQuickSwitch9.QQuickListView10.QQuickGridView11.QQuickPopu…

0 基础学运维:解锁 K8s 云计算运维工程师成长密码

前言:作为一个过来人,我曾站在技术的门槛之外,连电脑运行内存和内存空间都傻傻分不清,完完全全的零基础。但如今,我已成长为一名资深的k8s云计算运维工程师。回顾这段历程,我深知踏上这条技术之路的艰辛与不…

Spring Boot - 数据库集成06 - 集成ElasticSearch

Spring boot 集成 ElasticSearch 文章目录 Spring boot 集成 ElasticSearch一:前置工作1:项目搭建和依赖导入2:客户端连接相关构建3:实体类相关注解配置说明 二:客户端client相关操作说明1:检索流程1.1&…

联想拯救者R720笔记本外接显示屏方法,显示屏是2K屏27英寸

晚上23点10分前下单,第二天上午显示屏送到,检查外包装没拆封过。这个屏幕左下方有几个按键,按一按就开屏幕、按一按就关闭屏幕,按一按方便节省时间,也支持阅读等模式。 显示屏是 :AOC 27英寸 2K高清 100Hz…

什么是线性化PDF?

线性化PDF是一种特殊的PDF文件组织方式。 总体而言,PDF是一种极为优雅且设计精良的格式。PDF由大量PDF对象构成,这些对象用于创建页面。相关信息存储在一棵二叉树中,该二叉树同时记录文件中每个对象的位置。因此,打开文件时只需加…

你的连接不是专用连接

当你打开网站看到如下提示,说明SSL证书到期了。 攻击者可能试图www窃取你的信息(例如、密码、消息或信用卡)。详细了解此警告 NET::ERR_CERT_DATE_INVALID 此服务器无法证明它是WWW ;它的安全证书已于2天前到期。这可能是错误配置或攻击者…

51单片机开发:定时器中断

目标:利用定时器中断,每隔1s开启/熄灭LED1灯。 外部中断结构图如下图所示,要使用定时器中断T0,须开启TE0、ET0。: 系统中断号如下图所示:定时器0的中断号为1。 定时器0的工作方式1原理图如下图所示&#x…

【电工基础】1.电能来源,触电伤害,触电预防,触电急救

一。电能来源 1.电能来源 发电-》输电-》变电-》配电 2.分配电 一类负荷 如果供电中断会造成生命危险,造成国民经济的重大损失,损坏生产的重要设备以致使生产长期不能恢复或产生大量废品,破坏复杂的工艺过程,以及破坏大…

简易计算器(c++ 实现)

前言 本文将用 c 实现一个终端计算器: 能进行加减乘除、取余乘方运算读取命令行输入,输出计算结果当输入表达式存在语法错误时,报告错误,但程序应能继续运行当输出 ‘q’ 时,退出计算器 【简单演示】 【源码位置】…

python-leetcode-从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode) # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right r…