zoukankan      html  css  js  c++  java
  • Shader的初步学习

             Shader 着色器 。shader 仅仅是渲染流水线中的一个环节,要想让shader发挥出它的作用,我们就需要知道它在渲染流水线中扮演什么样的角色。

    渲染流水线的工作任务在于由一个三维场景出发、生成(或者说渲染)一张三维图像。简而言之,计算机需要从一系列的顶点数据、纹理等信息出发,把这些信息最终转换成一张人眼可以看到的图像;这个工作由cpu 和GPU共同完成的;渲染流水线的三个阶段:

    *:应用阶段  --我们开发者对这个阶段有绝对的控制权。通常由CPU负责实现。此阶段,我们有3个主要任务:首先 准备好场景数据,如场景中包含哪些模型 ,摄像机的位置等 。其次 为了提高渲染性能,我们需要做一个粗粒度提出工作,以把哪些不可见的物体剔除出去。最后 我们需要设置好每个模型的渲染状态,这一阶段最重要的输出是渲染所需的几何信息,即渲染图元 (渲染图元可以是点,线、三角面等)。

    *:几何阶段--负责和每个渲染图元打交道,进行逐顶点,逐多边形的操作。这个阶段可以进一步分成更小的流水线阶段。此阶段的重要任务是把顶点坐标变换到屏幕空间中,在交给光缆器进行处理。这一阶段将会输出屏幕空间的二维顶点坐标,每个顶点对应的深度值,着色等相关信息,并传递下个阶段;

    *:光缆化阶段-- 这一阶段将会使用上个阶段传递的数据来产生屏幕上的像素,并渲染出最终的图像。这一阶段是在GPU上运行的。光缆化的任务决定每个渲染图元中的那些像素应该被绘制在屏幕上,他需要上一阶段得到逐顶点数据进行插值,然后在进行逐像素处理。

    我们什么都没有,唯一的本钱就是青春。梦想让我与众不同,奋斗让我改变命运!
  • 相关阅读:
    Java并发辅助类的使用
    使用List需要注意的点
    构造函数、静态变量、代码块执行顺序
    TreeMap源码分析
    大战红黑树
    关于HashMap多线程下环形链表的总结
    LinkedHashMap源码分析
    「HDU 3292」 No more tricks, Mr Nanguo
    「BZOJ 3122」「SDOI2013」 随机数生成器
    「BZOJ3884」 上帝与集合的正确用法
  • 原文地址:https://www.cnblogs.com/mengmengxia/p/6882201.html
Copyright © 2011-2022 走看看