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

GPU渲染阶段介绍+Shader基础结构实现

GPU是什么

        (CPU)Center Processing Unit:逻辑编程

        (GPU)Graphics Processing Unit:图形处理(矩阵运算,数据公式运算,光栅化)

渲染管线

        渲染管线也称为渲染流水线,就是CPU准备一些数据,然后告诉GPU渲染出一个二维的

        图像的过程。

        渲染管道的三个阶段:应用程序阶段,几何阶段,光栅化阶段

        1.应用阶段(CPU)

                主要就是CPU将硬盘中的数据加载后,和内存进行通讯后,将需要显示的数据信息

                (顶点数据,纹理坐标,法线信息),传递GPU处理。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Process : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){//从硬盘加载数据GameObject prefab = Resources.Load<GameObject>("Capsule");//将数据放置在内存中GameObject capsule = Instantiate<GameObject>(prefab);//物体上面,带有材质球,材质球会引用Shader着色器,因为Shader是GPU编程,所以就会将数据传递给GPU//注意:Unity采用了材质球调用Shader,所以Unity是通过材质球将数据传递给GPU的,别的引擎不一定是材质球实现}
}
          2.几何阶段(GPU)

                几何阶段最重要的工作就是“变换三维顶点坐标”,变换的工作由矩阵运算完成。

                空间

                        模型空间:3D物体的原始坐标,存储在模型中。

                        世界空间:物体放在场景中,才能构成整个游戏场景。

                        观察空间:需要以相机为原点的三维空间。

                        裁剪空间:物体是否在相机的渲染范围内。

                        屏幕空间:3D物体,投影到屏幕上。

                物体最终显示:需要GPU进行一系列的矩阵运算,将模型空间下的点,转换到屏间

                下(转换点的过程是并行)

                非模型顶点信息中记录的点,GPU会以线性插值的方式获得并提示

        3.光栅化阶段(GPU)

                使用上一个阶段(几何阶段)递过来的数据,对像素点进行染色,最终显示出来,

                染色过程为并行执行。

        着色器(Shader)是什么?

                给GPU编程的语言,代码会在GPU上并行执行(几何运算,光栅化)

        Unity的Shader类型

                固定管线Shader:很古老显卡的编程着色器,现在很少使用,画质不好

                顶点/片元Shader:通用的着色器类型(重点学习),可编程

                表面体Shader:Unity自己创建的着色器类型,基于顶点/片元着色器二次封装实

                现,降低了着色器的编写难度。

        材质球和Shader的关系

                Unity中Material用来关联游戏物体和Shader着色器,所以编写Shader前,需要先

                建立材质球

        建立Shader方法

                1.建立材质球

                2.建立Shader文件

                        (1)表面体Shader

                        (2)顶点/片元Shader

                        (3)图片效果Shader

                        (4)GPU运算Shader

        Pass通道和SubShader的区别

                Pass通道在SubShader内部,SubShader不执行,则内部的Pass通道也不会执行

                SubShader从上向下依次执行,每次只会执行一个,同一个SubShader中的Pass通

                道会依次向下执行。

        Shader的基本结构
//Shader名称与材质球的Shader列表对应
Shader "CreateTest/FixedColor"
{//Shader属性,会出现在关联材质球的选项里Properties{}//SubShader根据显卡等级只执行一个SubShader{//Pass依次向下执行Pass{}}SubShader{}//所有SubShader都执行失败,则最终执行FallBack效果//"Diffuse"是Unity的一个内置Shader效果FallBack "Diffuse"
}

        实现染色着色器效果(shader文件):

//Shader名称与材质球的Shader列表对应
Shader "CreateTest/FixedColor"
{//Shader属性,会出现在关联材质球的选项里Properties{//用于在材质球上面配置的颜色//属性名"_Color()"//参数1:材质面板上显示的名称//参数2:属性的类型Color//等号右边:当前属性的默认值_Color("颜色",Color)=(1,1,1,1)}//SubShader根据显卡等级只执行一个SubShader{Pass{//使用固定管线着色器染色//Color[]是固定管线着色器的染色命令Color[_Color]}}//所有SubShader都执行失败,则最终执行FallBack效果//"Diffuse"是Unity的一个内置Shader效果FallBack "Diffuse"
}

                

该系列专栏为网课课程笔记,仅用于学习参考。       


http://www.mrgr.cn/news/99006.html

相关文章:

  • CTF--秋名山车神
  • 《AI大模型应知应会100篇》第26篇:Chain-of-Thought:引导大模型进行步骤推理
  • 2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?
  • Linux-进度条小程序
  • RenderStage::runCameraSetUp
  • B端可视化像企业数据的透视镜,看清关键信息
  • 1panel第三方应用商店(本地商店)配置和使用
  • Rocky8 升级 Python 3.9.20 并部署 Airflow 2.10.5
  • 基础学习:(7)nanoGPT 剩下的细节
  • 202520读书笔记|《我要按自己喜欢的方式去生活》——面对可能到来的裁员,那就等正式通知吧
  • python链表
  • CentOS 7系统yum报错解决方案(CentOS 7官方EOL问题修复)
  • 基于微信小程序的中医小妙招系统的设计与实现
  • ffmpeg 添加 nvenc 硬件编解码支持
  • 力扣-hot100(盛最多水的容器-双指针)
  • springcloud alibaba
  • Vue3 + TypeScript中provide和inject的用法示例
  • 论文阅读:2024 arxiv AI Safety in Generative AI Large Language Models: A Survey
  • 红黑树insert笔记,外带一点迭代器思考
  • Java拼团项目