文档详情

黄章进图形学第十章可编程着色器.pdf

发布:2017-06-16约7.37千字共32页下载文档
文本预览下载声明
高级计算机图形学 中国科学技术大学计算机学院 黄章进 zhuang@ 第十章之第二节 GLSL(I) 内容 着色器应用程序 • 顶点着色器 • 片段着色器 着色器编程 • OpenGL端的着色语言API 顶点着色器应用 顶点的移动 • 变形(morphing) • 波动 • 分形 光照 • 更真实的模型 • 卡通着色器 片段着色器应用 逐片段进行光照计算 逐顶点光照计算 逐片段光照计算 片段着色器应用 纹理映射 光滑明暗处理 环境映射 凹凸映射 着色器的编程语言 第一个可编程着色器是用类似汇编语言的 形式编写的 OpenGL扩展增加了顶点和片段着色器 Cg (C for graphics)是类似C语言的着色器 编程语言 • 在OpenGL和DirectX下均可运行 • 与OpenGL的接口比较复杂 OpenGL着色语言(GLSL) GLSL OpenGL Shading Language的缩写 OpenGL 2.0的一部分 高级类C语言 引进新的数据类型 • 矩阵 • 向量 • 采样器(Samplers ) OpenGL的状态通过内置变量传递 一个简单的顶点着色器 //const vec4 red = vec4(1.0, 0.0, 0.0, 1.0); void main(void) { gl_Position = gl_ProjectionMatrix *gl_ModelViewMartrix*gl_Vertex; // gl_FrontColor = red; } 执行模式 glColor 应用程序 glOrtho glLoadMatrix OpenGL 顶点 图元装配 状态 着色器 gl_Vertex gl_FrontColor gl_ModeViewMatrix gl_Position gl_ProjectionMatrix 一个简单的片段着色器 void main(void) { gl_FragColor = gl_Color; } 执行模式 OpenGL 应用程序 状态 顶点 光栅器 片段 片段着 像素 帧缓冲 色器 区 gl_Position gl_Color gl_FrontColor gl_FragColor (逐顶点) (插值) 连接着色器与OpenGL OpenGL扩展(Extensions ) • ARB_shader_objects • ARB_vertex
显示全部
相似文档