美文网首页
GLSL基本概念(一)

GLSL基本概念(一)

作者: 忆痕无殇 | 来源:发表于2019-07-05 16:34 被阅读0次

    1:渲染管线:渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的并行处理单元。

    2:着色器渲染过程:在渲染过程中,必须存储两种着色器。分别是顶点着色器和片元着色器。
    顶点着色器是第一个着色器、片元着色器是最后一个。


    着色器渲染过程.jpg 顶点、片元着色器原理示意.jpg

    1)顶点着色器:顶点着色器中处理顶点。有几个顶点就绘制几次。
    顶点着色业务:1: 矩阵变换位置 2:计算光照公式生成逐顶点颜色 3:生成/变换纹理坐标
    总结:它可以同于执行自定义的计算,实施新的变换,照明或者传统的固定功能所不允许的基于顶点的效果。
    顶点着色器代码shaderv.vsh

    attribute vec4 position;
    attribute vec2 textCoordinate;
    varying lowp vec2 varyTextCoord;
    
    void main()
    {
        varyTextCoord = textCoordinate;
        gl_Position = position;
    }
    

    2)片元着色器:片元着色器处理像素顶点颜色。控制图形绘制的样式
    片元着色器业务:1:计算颜色 2: 获取纹理 3: 往像素点中填充颜色值
    总结:它可以用于图片/视频/图形中每个像素的颜色填充(比如:给视频添加滤镜,实际上就是将视频中每个图片的像素点颜色填充进行修改。)
    片元着色器代码shaderf.fsh

    varying lowp vec2 varyTextCoord;
    uniform sampler2D colorMap;
    
    void main()
    {
        lowp vec4 temp = texture2D(colorMap, varyTextCoord);
        gl_FragColor = temp;
    }
    

    注:uniform统一顶点/片元着色器使用的不变数据。

    3)图元装配
    顶点着色器之后下一个阶段就是图元装配。图元(primitive)点、线、三角形等。
    图元装配:将顶点数据计算成一个个图元。在这个阶段会执行裁剪、透视分割和viewport变换操作,然后进入光栅化阶段。
    4)光栅化
    在这个阶段绘制对应的图元(点/线/三角形)光栅化就是将图元转换成一组二维片段的过程。而这些转化的片段将由片元着色器处理,这些二维片段就是屏幕上可绘制的像素。
    个人理解光栅化就是将图像像素化。弄成一个像素一个像素的小格格。就像下面这张图片的右半部分感觉一样。


    2783057_masaike.jpg

    3:逐片段操作


    逐片操作.png

    1)像素归属测试:确定帧缓存区中位置【Xw,Yw】的像素目前是不是归属于OpenGLES所有。例如,如果一个显示OpenGL ES帧缓存区View 被另一个View所遮蔽。则窗口系统可以确定被遮蔽的像素不属于OpenGL ES 上下文。从而不全显示这些像素。注:像素归属测试是OpenGL ES的一部分,它不由开发者人为控制,而是由OpenGL ES 内部进行。
    2)裁剪测试:裁剪测试确定【Xw,Yw】是否位于作为OpenGL ES状态的一部分裁剪矩形范围内。如果该片段位于裁剪区域外,则被抛弃。
    3)模板和深度测试:输入片段的模板/深度值进行比较,确定片段是否拒绝测试
    4)混合:混合将新生成的片段颜色与保存在帧缓存的位置的颜色值混合起来。
    5)抖动:抖动可用于最小化因为使用有限精度在帧缓存区

    相关文章

      网友评论

          本文标题:GLSL基本概念(一)

          本文链接:https://www.haomeiwen.com/subject/aqzshctx.html