图形学

【opengl渲染流程】

CPU:  FBX-->Meshrender

  FBX  obj:  模型文件     里面包含了 uv  顶点位置,法线 切线 等 渲染所需要的信息。

  Meshrender:  将这些信息传递到GPU。skin mesh render / mesh render meh filter

  skin mesh render : 带蒙皮的骨骼

  mesh render :主要是将 顶点等信息传递到GPU

  mesh filter: 将哪个模型传递到GPU

GPU:

  渲染管线:

    顶点着色器 --》 光栅化 --》 片段着色器 --》 

    alpha测试 --》模板测试 --》 深度测试 --》Blend --》Gbuffer --> frontBuffer --> frameBuffer --> 显示器

  

  顶点着色器:

    1,计算顶点颜色

    2,将物体坐标系 转换到 相机坐标系

  光栅化:

    将顶点 转换成 像素

    插值

    顶点 4 个 到了 片段着色器 100*100

    结论:

      顶点着色器 会运行 4 次 ,片段着色器会运行 10000 次

      顶点着色器 和 片段着色器 运算次数不是一个量级 

      能把运算放在顶点着色器就放在顶点着色器

  片段着色器:

    1,已经是 像素点。

    纹理采样。从纹理像素 赋给 像素

    像素 跟灯光计算

 

  像素:RGBA  4通道组成。RGBA 8888 表示每个通道占8bit,4个通道占32位

    屏幕:720*1280  横 有 720个像素

            竖 有 1280个像素

    float[720*1280]

  alpha测试:挑选合格的alpha 像素显示

  模板测试:像素 还可以携带模板信息。达到条件的模板值与Gbuffer值计算

  深度测试:符合条件的就通过,不合格就丢弃

  blend:将当前要渲染的像素与之前已经渲染的像素进行混合运算

  GBuffer:RGBA    模板值   深度值等。。。

  FrontBuffer:float[720*1280]

  framebuffer:float[720*1280]

【shader结构】

1,shader语言

  opengl:SGI公司开发  跨平台

      GLSL:opengl shader langurage

 

  dx:微软开发,对显卡的性能开发的非常好,非跨平台

    HLSL: high level shader langurage

  CG:微软和英伟达公司联合开发。跨平台,C语言开发,性能好

2,unity shader语言

  支持以上三种语言 opengl  dx  cg

  CG和HLSL包括在CGPROGRAM...ENDCG 语法块内

  GLSL包括在GLSLPROGRAM...ENDGLSL语法块内

 

  自己是语言。shader lab

3,unity  shader分类

  fixed shader:  shader 1.0  主要是开关式

  顶点  片段着色器: shader2.0  功能里面的公式可以自己定义

  Surface shader:  是对前两种的一种封装

 

【属性定义p4】

posted @ 2020-01-23 15:37  狂奔~  阅读(202)  评论(0)    收藏  举报