Shader基础笔记(GPU 和Shader基础结构)


  • GPU的运行效率高,如果是10000个顶点着色,CPU会顺序执行10000个指令,而GPU是会并行的,同时对10000个顶点进行着色。
  • GPU的缺点:在并行的过程中顶点之间无法相互联系。
  • 计算机中的三维模型本质上是一组包括顶点位置、法线方向、顶点颜色等信息的一组数据。
  • GPU将包括三维模型在内的一系列数据进行计算,将结果提交给显示器设备。
  • Shader主要编辑顶点着色器和片元着色器来影响渲染效果。
  • CPU将准备的数据传送到显存,GPU再访问显存(不会直接访问内存,因为这样比较快),比较耗时的是DrawCall过程
  • 根据DrawCall原理进行优化:如果很多个网格都用的是不同Shader,就会调用多次DrawCall,如果将所有的网格用一个Shader,就会快很多。
  • 顶点着色器:几何阶段的数据,对每一个顶点调用顶点着色器,计算顶点的颜色和进行坐标变换
  • 几何着色器:输入点线面等图元数据。生成新的图元,逐图元的着色,利用GPU的特性来生成新的细节,减轻CPU的负担
  • 裁剪:裁减掉无需渲染的部分,减轻后序流程负担。
  • 屏幕映射:坐标映射到屏幕坐标系,不可编程,三维变成二维。
  • 三角形设置:输入顶点的位置、颜色、深度等,得到三角形对屏幕像素的覆盖信息。
  • 三角形变换:根据设置结果,判断像素是否被三角形覆盖,如果是,则生成片元,并且对屏幕内部的像素进行插值。(三角形内部的颜色根据三角形顶点的颜色进行插值)
  • 片元着色器:根据插值结果,纹理采样、计算光照结果(对每一个像素进行光照结果的计算,这样的计算的结果比放在三角形变换里更正确、柔和)等。
  • 逐片元操作:用片元像素颜色、深度等来混合和写入像素颜色。
  • OpenGL与DirectX :是图像应用接口,开发者使用接口,接口调用显卡驱动,显卡驱动推动显卡工作。
  • 两个简单的shader程序。




  • 几种Shader简介:



  • Shader程序的组成:


  • Properties代码格式:_Name("DisplayName",Type)=Default Value        DisplayName是在用户面板上显示的名字。最后不需要写分号。
  • Subshader:做一些渲染状态设置。Cull Back :背面剔除(法线方向可以判断正反面)。 Front :正面剔除。 Off:不剔除。

Ztest:Z轴深度。Zwhite:是否要让近处景物遮挡远处的。  Blend:透明等设置。

Tag:

Subshader中的Pass会依次执行。Shader中的Pass可以互相调用。

Subshader和Pass中包含的是最重要的渲染信息。

Vertex  Shader 顶点着色器    Fragment 片段着色器    Surface   基本的着色器,相当于前两个的封装。

  • FallBack是本Shader中的内容不被支持时,选用哪种低级的Shader替换。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值