1、什么是渲染管线?
渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的的并行处理单元。
2、管线的大致工作流程
顶点着色器中处理所有定点的位置、颜色,传递给下一阶段组装成精灵、线条和三角形,并根据视截体的可视范围来进行裁剪(抛弃不可见的元素),最后由片段着色器进行光栅化处理,光栅化的片段数量会远远高于顶点的数量。
3、着色器的数据类型
⑴:顶点着色器
attribute //用户自定义的,包含每个定点的属性数据,如定点位置、定点颜色等
uniform //用户自定义的,服务于所有定点的一个统一的值,如变换矩阵、光源位置等
varying //用户自定义的,用于向片段着色器输出数据
gl_Position //用户自定义的,用户接受顶点着色器的运算输出结果
attribute float size; attribute vec3 customColor; attribute float time; uniform float globalTime; varying vec3 vColor; varying float fAlpha; void main() { vColor = customColor; vec3 pos = position; float animTime = min(1.4, max(1.0, globalTime - time)); vec3 animated = vec3( pos.x * animTime, pos.y * animTime, pos.z * animTime ); vec4 mvPosition = modelViewMatrix * vec4( animated, 1.0 ); fAlpha = 1.0; + gl_PointSize = size * ( 300.0 / length( mvPosition.xyz ) ); gl_Position = projectionMatrix * mvPosition; }
⑵:片段着色器
varying//用户自定义的,用于接收由片段着色器发送的数据
uniform//用户自定义的,服务于所有片段的一个恒定的值,如颜色等
sampler//用户自定义的,用户纹理操作的一种特殊类型
gl_FragColor//系统内置变量,用于接收片段着色器的输出结果
precision mediump float;//精度限定符,声明于片段着色器的起始位置
precision mediump float; // lowp, mediump, highp uniform vec3 color; uniform sampler2D texture; varying vec3 vColor; varying float fAlpha; void main() { float depth = gl_FragCoord.z / gl_FragCoord.w; float near = 100.0; float far = 400.0; float fog = 0.0 + smoothstep( near, far, depth ); vec4 outColor = texture2D( texture, gl_PointCoord ); if ( outColor.a < 0.24 ) discard; gl_FragColor = vec4( color * vColor, fAlpha ); gl_FragColor = gl_FragColor * outColor; gl_FragColor = mix( gl_FragColor, vec4( vec3(0.0,0.0,0.0), gl_FragColor.w ), fog ); }
相关推荐
着色器语言学习教程,学习OpenGL的必备技能
glsl 3.0语言规范,学习glsl必看
GLSL学习__中文版
上传的文件是GLSL描述语言的实例 上传的文件是GLSL描述语言的实例
本文档仅指定 OpenGL 着色语言 (GLSL) 4.60 版本。这个需要__VERSION__ 替换 460,并且要求 #version 仅接受 460。如果声明了 #version数字较小时,接受的语言是着色语言的早期版本,即是否支持取决于 API 中上下文...
为使用GLSL语言编写的对茶壶进行卡通着色,是GLSL语言学习者入门的小程序
学习OpenGL着色语言虽然有橙宝书作为参考,但是其上的例子不易上手,这里提供一个最简单的例子供初学者使用。
opengl编程入门,glsl语言的hello world,着色器,glsl语言简介
GLSL语言集成 从下载此扩展程序或获取。 提供GLSL语言集成的VSIX项目。 包括语法高亮显示,代码完成(shader文件中的OpenGL 4.6 +标识符),带有花键和错误列表的错误标记(错误列表支持非常alpha)。 错误标记...
这源码是OpenGL4.6着色语言精通_第三版的全部源代码,利用GLSL 4.6和C++ 17构建高质量实时三维图形。主要重点是OpenGL着色语言(GLSL)。因此,我们不花时间讨论用OpenGL编程的基础。在这个我认为读者对在OpenGL中...
OpenGL着色语言(GLSL),添加了完整的目录,阅读更方便。
C# opengl vao vbo ebo 结合GLSL 语言 渲染器实例 有备注有说明,看蓝宝书一头雾水的可以看下,代码为OPENGL 加VS2015
glsl语言服务器GLSL的语言服务器实现地位当前,此LSP实现可以使用HTTP或stdio进行接口。当前功能诊断程序计划功能完成时间徘徊跳到def 工作区符号查找参考编译 git submodule update --initcmake -Bbuild -...
OpenGL着色语言(GLSL)开发手册,不容错过......
基于国产GPU的GLSL编译器设计.pdf
hlsl2glsl hlsl转换为glsl图形化工具hlsl2glsl hlsl转换为glsl图形化工具
GLSL的简单printf功能
GLSL-Debugger 对GLSL语言的调试工具
提供Shader编辑器的基本功能,以便可以尽快开始编写自己的Shader。这包括:顶点,片段和几何着色... GLSL编辑器中的语法高亮;统一变量和光源参数的交互式编辑;预定义的简单形状(torus等)和简单的OBJ装载机;还有一些。