share and love|

Kerios

园龄:3年1个月粉丝:0关注:2

基础理论_渲染管线

前言:博学静思才能成长,笔记是记录笔者自己的学习路程。

 

01:渲染(rendering)是什么?

 

渲染是以软件由模型生成图像的过程。模型是用语言或数据结构进行严格定义的三维物体或

 

虚拟场景的描述。

 

渲染用于描述:计算视频编辑软件中的效果,以生成最终视频的输出过程

 

02:渲染的类别:离线渲染(电影) 实时渲染(游戏) {本文不做对于离线渲染的描述}

 

实时渲染的要求是:需要我们一秒钟完成24帧以上的图像的渲染。(不卡顿)性能表现尤为重要

 

一秒钟完成60帧以上(流畅),因此需要我们进行优化手段加速渲染,达到理想要求

 

03:渲染管线是什么?

 

完成渲染操作的一道流水线。也就是完成渲染的一套流程。一般而言就是把模型数据,贴图资源种种文件给与渲染管线,通过渲染管线最终生成我们想要的画面。(其中明显涉及到了3d到2d的转化)

 

04:unity内置渲染管线(unity build-in rendering pipeline)的讲解

 

广义的渲染管线有两部分,一个是cpu端的渲染逻辑,一个是gpu端的渲染管线。口头的渲染管线大都是gpu端的渲染管线,但实际上cpu端的渲染逻辑也是一个十分重要的内容。

 

cpu端的渲染逻辑工作:1.剔除:进行视椎体剔除,遮挡剔除,根据层级等规则

 

2.渲染顺序:按照距离,渲染队列等规则

 

3:打包数据:比如顶点数据,材质数据等等

 

4:调用shader:setpasscall以及drawcall

 

cpu端的任务也被称为应用阶段(unityshader入门精要),身为开发者的三大任务:提交场景数据其中包括摄像机的位置,模型,光源等等,再进行粗粒度剔除(culling)目的在于把不需要处理的数据进行筛选,防止移交到了几何阶段。最后就是确立渲染状态这也是最为重要的一点,比如用那些shader,什么材质,什么纹理等等。

 

几何阶段(gpu内)的目的是决定渲染的图元,怎样绘制,在哪里绘制,同时进行逐顶点,逐多边形的操作。

 

应用阶段的产物:就是渲染图元(点,线,三面角)

 

而几何阶段就是将顶点的三维坐标(包括对应的深度值,着色等信息)通过屏幕空间的光栅器转化到输出空间的二维坐标(保留那些信息)。

 

gpu端的渲染管线工作:使用信息产生像素,并渲染出最终的图像(这是一个很多的过程如下我们进行说明)

 

接收到了cpu的drawcall后,显卡的gpu从cpu获得了几何阶段的信息后知道了我可以开始工作了。注意drawcall命令仅仅指向是需要被渲染的图元列表,而不会包含任何一个材质信息。

 

gpu根据渲染状态,所有输入的顶点数据进行计算得到像素,也就是顶点数据(应用阶段得到的图元)先由顶点shader(vertex shader)将顶点坐标从模型空间变化到裁剪空间,通俗的理解也就是拍照,拍照实则也是一个三维到二维的过程,注意的是顶点shader并不会产生2d的图像,仅使得场景中的3D对象产生变形效果。变形后自然要进行着色细分,便会到曲面细分着色器(tesselltry shader)将图元细分方便于着色,此时处于裁剪空间,需要到屏幕上,要进行一个裁剪,得到我们想要的一个画面范围,再进行屏幕映射。要分清楚剔除和裁剪。裁剪是裁剪出我们视野之外的物体,并剔除某些三角图元的面片。屏幕映射做的工作是一个图元坐标系到屏幕坐标系的过程。此时才算几何阶段结束了。

 

那么开始光栅化:光栅化的过程是通过三角形设置,三角形遍历,此时就可以着色了,用片元着色器(fragment shader)进行片元的着色,其中还有一个逐片元着色(per-fragment operations)进行颜色的一些修改,深度缓冲以及混合

 

最后到了逐片元操作:要进行模板测试,深度测试(用于渲染阴影,轮廓渲染),再进行混合(不透明物体。混合要关闭,透明物体混合要开启)最终得到屏幕的图像。

 

(作为渲染管线基础的解释,后续会做出更多深层次的说明,同时包括数学原理,纹理采样等等)

本文作者:Kerios

本文链接:https://www.cnblogs.com/kerios-123/p/15837831.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Kerios  阅读(102)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 reol的歌曲 REOL
reol的歌曲 - REOL
00:00 / 00:00
An audio error has occurred.

作曲 : Reol

作词 : Reol

fade away...do over again...

fade away...do over again...

歌い始めの一文字目 いつも迷ってる

歌い始めの一文字目 いつも迷ってる

どうせとりとめのないことだけど

伝わらなきゃもっと意味がない

どうしたってこんなに複雑なのに

どうしたってこんなに複雑なのに

噛み砕いてやらなきゃ伝わらない

ほら結局歌詞なんかどうだっていい

僕の音楽なんかこの世になくたっていいんだよ

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

目の前 広がる現実世界がまた歪んだ

目の前 広がる現実世界がまた歪んだ

何度リセットしても

僕は僕以外の誰かには生まれ変われない

「そんなの知ってるよ」

気になるあの子の噂話も

シニカル標的は次の速報

麻痺しちゃってるこっからエスケープ

麻痺しちゃってるこっからエスケープ

遠く遠くまで行けるよ

安定なんてない 不安定な世界

安定なんてない 不安定な世界

安定なんてない きっと明日には忘れるよ

fade away...do over again...

fade away...do over again...

そうだ世界はどこかがいつも嘘くさい

そうだ世界はどこかがいつも嘘くさい

綺麗事だけじゃ大事な人たちすら守れない

くだらない 僕らみんなどこか狂ってるみたい

本当のことなんか全部神様も知らない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.