书籍详情
OpenGL着色语言
作者:(美)罗斯特(Rost,R.J.) 著,天宏工作室 译
出版社:人民邮电出版社
出版时间:2006-10-01
ISBN:9787115151391
定价:¥59.00
购买这本书可以去
内容简介
《OpenGL着色语言》要求读者需要具有一定的数学知识,适合有兴趣编写着色器的应用程序开发人员,可作为GLSL开发者的参考手册。不论专家或着色器编程初学者,都能在《OpenGL着色语言》中发现所需的财富。OpenGL着色语言是一种用于OpenGL的高级过程着色语言,它是近年来图形编程领域中出现的最重要的新型开发技术。OpenGL是业界领先的跨平台3D图形API,而OpenGL着色语言允许开发人员控制图形处理管理线中最重要的阶段。《OpenGL着色语言》全面覆盖从算法到API,书中更含丰富的API函数参考及顶级的案例分析。全书首先阐述了这种高级编程语言的语法和语义,在此基础上,详尽介绍了一系列着色器实例,同时对底层算法进行了解释,透析从固定功能图形硬件到可编程图形硬件的新时代转变,探究使用新的OpenGL函数调用来创建和操作着色器的方法,最后将该语言与其他著名的商业着色语言进行了比较。
作者简介
本书提供作译者介绍Randi Rost目前是科罗拉多州3Dlabs’Fort Collions图形软件小组的经理。这个小组推动了openGL 2.0标准的定义,并实现了用于3Dlabs图形产品的OpenGL驱动程序。在加入3Dlabs之前,Randi是Hewlett-Packard公司图形软件实验室的一位图形软件架构师及KubotaGraphics公司的图形软件设首席架构师。.Randi在图形行业有超过25年的从业经验,他为新兴图形标准的制定付出了15年的心血。自1992年发布OpenGLl.0以来,他一直致力于OpenGL的设计和革新。他是少数几个对OpenGL的每一个主要版本(O...
目录
第1章 OpenGL基础知识概述
1.1 OpenGL的历史
1.2 发展OpenGL
1.3 执行模型
1.4 帧缓冲区
1.5 状态
1.6 处理管线
1.7 绘制几何对象
1.7.1 指定几何对象
1.7.2 逐个顶点操作
1.7.3 图元组装
1.7.4 图元处理
1.7.5 栅格化
1.7.6 片元处理
1.7.7 逐个片元的操作
1.7.8 帧缓冲区操作
1.8 绘制图像
1.8.1 像素解码
1.8.2 像素传输
1.8.3 栅格化和后端处理
1.8.4 读取控制
1.9 坐标变换
1.10 纹理
1.11 小结
1.12 参考资料
第2章 基础知识
2.1 OpenGL着色语言简介
2.2 为什么要编写着色器
2.3 OpenGL可编程处理器
2.3.1 顶点处理器
2.3.2 片元处理器
2.4 语言概述
2.4.1 语言的设计考虑
2.4.2 以C为基础
2.4.3 对C的增加
2.4.4 来自C++的增加
2.4.5 不受支持的C特性
2.4.6 其他差异
2.5 系统概述
2.5.1 驱动程序模型
2.5.2 OpenGL着色语言编译器/链接器
2.5.3 OpenGL API扩展
2.6 主要优点
2.7 小结
2.8 参考资料
第3章 语言定义
3.1 着色器对的实例
3.2 数据类型
3.2.1 标量
3.2.2 矢量
3.2.3 矩阵
3.2.4 取样器
3.2.5 结构
3.2.6 数组
3.2.7 Void
3.2.8 声明和作用域
3.2.9 类型匹配与提升
3.3 初始化器和构造函数
3.4 类型转换
3.5 限定符和着色器接口
3.5.1 Attribute限定符
3.5.2 Uniform限定符
3.5.3 Varying限定符
3.5.4 常量限定符
3.5.5 缺少限定符
3.6 流控制
3.6.1 函数
3.6.2 调用约定
3.6.3 内置函数
3.7 操作
3.7.1 索引
3.7.2 混合
3.7.3 按部分操作
3.8 预处理器
3.9 预处理器表达式
3.10 错误处理
3.11 小结
3.12 参考资料
第4章 OpenGL可编程管线
4.1 顶点处理器
4.1.1 顶点属性
4.1.2 一致变量
4.1.3 特殊的输出变量
4.1.4 内置的易变变量
4.1.5 用户定义的易变变量
4.2 片元处理器
4.2.1 易变变量
4.2.2 一致变量
4.2.3 特殊的输入变量
4.2.4 特殊的输出变量
4.3 内置一致变量
4.4 内置常量
4.5 与OpenGL的固定功能交互
4.5.1 两侧颜色模式
4.5.2 点大小模式
4.5.3 裁剪
4.5.4 光栅位置
4.5.5 位置不变性
4.5.6 纹理处理
4.6 小结
4.7 参考资料
第5章 内置函数
5.1 角度和三角函数
5.2 指数函数
5.3 常见函数
5.4 几何函数
5.5 矩阵函数
5.6 矢量关系函数
5.7 纹理访问函数
5.8 片元处理函数
5.9 噪声函数
5.10 小结
5.11 参考资料
第6章 简单的着色实例
6.1 砖块着色器简介
6.2 顶点着色器
6.3 片元着色器
6.4 观察
6.5 小结
6.6 参考资料
第7章 OpenGL着色语言API
7.1 创建着色器对象
7.2 编译着色器对象
7.3 链接和使用着色器
7.4 清理工作
7.5 查询函数
7.6 指定顶点属性
7.7 指定一致变量
7.8 采样器
7.9 开发辅助工具
7.10 与实现有关的API值
7.11 砖块着色器的应用程序代码
7.12 小结
7.13 参考资料
第8章 开发着色器
8.1 一般原则
8.1.1 理解问题
8.1.2 逐步提高复杂性
8.1.3 测试和重复
8.1.4 尽量简化
8.1.5 模块化
8.2 性能考虑
8.2.1 考虑计算频率
8.2.2 分析算法
8.2.3 使用内置函数
8.2.4 使用矢量
8.2.5 使用纹理编写复杂函数
8.2.6 回顾信息日志
8.3 着色器调试
8.3.1 使用顶点着色器的输出
8.3.2 使用片元着色器的输出
8.3.3 使用简单的几何对象
8.4 着色器开发工具
8.4.1 RenderMonkey
8.4.2 OpenGL着色语言编译器前端
8.5 小结
8.6 参考资料
第9章 传统着色器
9.1 变换
9.2 光源
9.2.1 定向光源
9.2.2 点光源
9.2.3 聚光灯
9.3 材质属性和光照
9.4 两侧光照
9.5 无光照
9.6 雾化
9.7 纹理坐标生成
9.8 用户裁剪
9.9 纹理应用
9.10 小结
9.11 参考资料
第10章 存储的纹理着色器
10.1 从着色器内部访问纹理贴图
10.2 简单的纹理处理实例
10.2.1 应用程序设置
10.2.2 顶点着色器
10.2.3 片元着色器
10.3 多重纹理处理实例
10.3.1 应用程序设置
10.3.2 顶点着色器
10.3.3 片元着色器
10.4 环境贴图实例
10.4.1 应用程序设置
10.4.2 顶点着色器
10.4.3 片元着色器
10.5 使用BRDF数据的多项式纹理贴图
10.5.1 应用程序设置
10.5.2 顶点着色器
10.5.3 片元着色器
10.6 小结
10.7 参考资料
第11章 程序纹理着色器
11.1 常规图案
11.1.1 条纹顶点着色器
11.1.2 条纹片元着色器
11.2 玩具球
11.2.1 应用程序设置
11.2.2 顶点着色器
11.2.3 片元着色器
11.3 网格
11.4 凹凸贴图
11.4.1 应用程序设置
11.4.2 顶点着色器
11.4.3 片元着色器
11.4.4 法向量贴图
11.5 小结
11.6 参考资料
第12章 噪声
12.1 定义噪声
12.1.1 2D噪声
12.1.2 更高维度的噪声
12.1.3 在OpenGL着色器中使用噪声
12.2 噪声纹理
12.3 权衡考虑
12.4 一个简单的噪声着色器
12.4.1 应用程序设置
12.4.2 顶点着色器
12.4.3 片元着色器
12.5 扰动
12.5.1 太阳表面着色器
12.5.2 大理石
12.6 花岗岩
12.7 木材
12.7.1 应用程序设置
12.7.2 片元着色器
12.8 小结
12.9 参考资料
第13章 动画着色器
13.1 开/关
13.2 阈值
13.3 转换
13.4 关键帧插值
13.5 其他混合效果
13.6 粒子系统
13.6.1 应用程序设置
13.6.2 纸炮顶点着色器
13.6.3 纸炮片元着色器
13.6.4 进一步增强
13.7 摇摆
13.8 小结
13.9 参考资料
第14章 反走样过程纹理
14.1 走样的原因
14.2 避免走样
14.3 提高分辨率
14.4 反走样的条纹实例
14.4.1 生成条纹
14.4.2 分析预过滤
14.4.3 自适应分析预过滤
14.4.4 分析积分
14.4.5 反走样的砖块片元着色器
14.5 频率限定
14.6 小结
14.7 参考资料
第15章 反真实着色器
15.1 剖面线实例
15.1.1 应用程序设置
15.1.2 顶点着色器
15.1.3 生成剖面线
15.1.4 获得一致的线条密度
15.1.5 光照
15.1.6 添加特征
15.1.7 剖面线片元着色器
15.2 技术示意图实例
15.2.1 应用程序设置
15.2.2 顶点着色器
15.2.3 片元着色器
15.3 Mandelbrot实例
15.3.1 Mandelbrot set简介
15.3.2 顶点着色器
15.3.3 片元着色器
15.3.4 Julia set
15.4 小结
15.5 参考资料
第16章 用于图像处理的着色器
16.1 几何图像变换
16.2 数学贴图
16.3 查找表操作
16.4 颜色空间变换
16.5 图像内插和外插
16.5.1 亮度
16.5.2 对比度
16.5.3 饱和度
16.5.4 锐度
16.6 混合模式
16.6.1 正常
16.6.2 平均
16.6.3 溶解
16.6.4 背面
16.6.5 清除
16.6.6 变暗
16.6.7 变亮
16.6.8 正片叠底
16.6.9 屏幕
16.6.10 颜色加深
16.6.11 颜色减淡
16.6.12 叠加
16.6.13 柔光
16.6.14 强光
16.6.15 相加
16.6.16 相减
16.6.17 差值
16.6.18 反差值
16.6.19 排除
16.6.20 不透明度
16.7 卷积
16.7.1 平滑
16.7.2 边缘检测
16.7.3 锐化
16.8 小结
16.9 参考资料
第17章 语言的比较
17.1 着色语言的历史
17.2 RenderMan
17.3 OpenGL Shader(ISL)
17.4 HLSL
17.5 Cg
17.6 小结
17.7 参考资料
附录A 语言的语法
附录B API函数参考
glAttachObjectARB
glBindAttribLocationARB
glCompileShaderARB
glCreateProgramObjectARB
glCreateShaderObjectARB
glDeleteObjectARB
glDetachObjectARB
glEnableVertexAttribArrayARB
glGetActiveAttribARB
glGetActiveUniformARB
glGetAttachedObjectsARB
glGetAttribLocationARB
glGetHandleARB
glGetinfoLogARB
glGetObjectParameterARB
glGetShaderSourceARB
glGetUniformARB
glGetUniformLocationARB
glGetVertexAttribARB
glGetVertexAttribPointervARB
glLinkProgramARB
glShaderSourceARB
glUniformARB
glUseProgramObjectARB
glValidateProgramARB
glVertexAttribARB
glVertexAttribPointerARB
后记
1.1 OpenGL的历史
1.2 发展OpenGL
1.3 执行模型
1.4 帧缓冲区
1.5 状态
1.6 处理管线
1.7 绘制几何对象
1.7.1 指定几何对象
1.7.2 逐个顶点操作
1.7.3 图元组装
1.7.4 图元处理
1.7.5 栅格化
1.7.6 片元处理
1.7.7 逐个片元的操作
1.7.8 帧缓冲区操作
1.8 绘制图像
1.8.1 像素解码
1.8.2 像素传输
1.8.3 栅格化和后端处理
1.8.4 读取控制
1.9 坐标变换
1.10 纹理
1.11 小结
1.12 参考资料
第2章 基础知识
2.1 OpenGL着色语言简介
2.2 为什么要编写着色器
2.3 OpenGL可编程处理器
2.3.1 顶点处理器
2.3.2 片元处理器
2.4 语言概述
2.4.1 语言的设计考虑
2.4.2 以C为基础
2.4.3 对C的增加
2.4.4 来自C++的增加
2.4.5 不受支持的C特性
2.4.6 其他差异
2.5 系统概述
2.5.1 驱动程序模型
2.5.2 OpenGL着色语言编译器/链接器
2.5.3 OpenGL API扩展
2.6 主要优点
2.7 小结
2.8 参考资料
第3章 语言定义
3.1 着色器对的实例
3.2 数据类型
3.2.1 标量
3.2.2 矢量
3.2.3 矩阵
3.2.4 取样器
3.2.5 结构
3.2.6 数组
3.2.7 Void
3.2.8 声明和作用域
3.2.9 类型匹配与提升
3.3 初始化器和构造函数
3.4 类型转换
3.5 限定符和着色器接口
3.5.1 Attribute限定符
3.5.2 Uniform限定符
3.5.3 Varying限定符
3.5.4 常量限定符
3.5.5 缺少限定符
3.6 流控制
3.6.1 函数
3.6.2 调用约定
3.6.3 内置函数
3.7 操作
3.7.1 索引
3.7.2 混合
3.7.3 按部分操作
3.8 预处理器
3.9 预处理器表达式
3.10 错误处理
3.11 小结
3.12 参考资料
第4章 OpenGL可编程管线
4.1 顶点处理器
4.1.1 顶点属性
4.1.2 一致变量
4.1.3 特殊的输出变量
4.1.4 内置的易变变量
4.1.5 用户定义的易变变量
4.2 片元处理器
4.2.1 易变变量
4.2.2 一致变量
4.2.3 特殊的输入变量
4.2.4 特殊的输出变量
4.3 内置一致变量
4.4 内置常量
4.5 与OpenGL的固定功能交互
4.5.1 两侧颜色模式
4.5.2 点大小模式
4.5.3 裁剪
4.5.4 光栅位置
4.5.5 位置不变性
4.5.6 纹理处理
4.6 小结
4.7 参考资料
第5章 内置函数
5.1 角度和三角函数
5.2 指数函数
5.3 常见函数
5.4 几何函数
5.5 矩阵函数
5.6 矢量关系函数
5.7 纹理访问函数
5.8 片元处理函数
5.9 噪声函数
5.10 小结
5.11 参考资料
第6章 简单的着色实例
6.1 砖块着色器简介
6.2 顶点着色器
6.3 片元着色器
6.4 观察
6.5 小结
6.6 参考资料
第7章 OpenGL着色语言API
7.1 创建着色器对象
7.2 编译着色器对象
7.3 链接和使用着色器
7.4 清理工作
7.5 查询函数
7.6 指定顶点属性
7.7 指定一致变量
7.8 采样器
7.9 开发辅助工具
7.10 与实现有关的API值
7.11 砖块着色器的应用程序代码
7.12 小结
7.13 参考资料
第8章 开发着色器
8.1 一般原则
8.1.1 理解问题
8.1.2 逐步提高复杂性
8.1.3 测试和重复
8.1.4 尽量简化
8.1.5 模块化
8.2 性能考虑
8.2.1 考虑计算频率
8.2.2 分析算法
8.2.3 使用内置函数
8.2.4 使用矢量
8.2.5 使用纹理编写复杂函数
8.2.6 回顾信息日志
8.3 着色器调试
8.3.1 使用顶点着色器的输出
8.3.2 使用片元着色器的输出
8.3.3 使用简单的几何对象
8.4 着色器开发工具
8.4.1 RenderMonkey
8.4.2 OpenGL着色语言编译器前端
8.5 小结
8.6 参考资料
第9章 传统着色器
9.1 变换
9.2 光源
9.2.1 定向光源
9.2.2 点光源
9.2.3 聚光灯
9.3 材质属性和光照
9.4 两侧光照
9.5 无光照
9.6 雾化
9.7 纹理坐标生成
9.8 用户裁剪
9.9 纹理应用
9.10 小结
9.11 参考资料
第10章 存储的纹理着色器
10.1 从着色器内部访问纹理贴图
10.2 简单的纹理处理实例
10.2.1 应用程序设置
10.2.2 顶点着色器
10.2.3 片元着色器
10.3 多重纹理处理实例
10.3.1 应用程序设置
10.3.2 顶点着色器
10.3.3 片元着色器
10.4 环境贴图实例
10.4.1 应用程序设置
10.4.2 顶点着色器
10.4.3 片元着色器
10.5 使用BRDF数据的多项式纹理贴图
10.5.1 应用程序设置
10.5.2 顶点着色器
10.5.3 片元着色器
10.6 小结
10.7 参考资料
第11章 程序纹理着色器
11.1 常规图案
11.1.1 条纹顶点着色器
11.1.2 条纹片元着色器
11.2 玩具球
11.2.1 应用程序设置
11.2.2 顶点着色器
11.2.3 片元着色器
11.3 网格
11.4 凹凸贴图
11.4.1 应用程序设置
11.4.2 顶点着色器
11.4.3 片元着色器
11.4.4 法向量贴图
11.5 小结
11.6 参考资料
第12章 噪声
12.1 定义噪声
12.1.1 2D噪声
12.1.2 更高维度的噪声
12.1.3 在OpenGL着色器中使用噪声
12.2 噪声纹理
12.3 权衡考虑
12.4 一个简单的噪声着色器
12.4.1 应用程序设置
12.4.2 顶点着色器
12.4.3 片元着色器
12.5 扰动
12.5.1 太阳表面着色器
12.5.2 大理石
12.6 花岗岩
12.7 木材
12.7.1 应用程序设置
12.7.2 片元着色器
12.8 小结
12.9 参考资料
第13章 动画着色器
13.1 开/关
13.2 阈值
13.3 转换
13.4 关键帧插值
13.5 其他混合效果
13.6 粒子系统
13.6.1 应用程序设置
13.6.2 纸炮顶点着色器
13.6.3 纸炮片元着色器
13.6.4 进一步增强
13.7 摇摆
13.8 小结
13.9 参考资料
第14章 反走样过程纹理
14.1 走样的原因
14.2 避免走样
14.3 提高分辨率
14.4 反走样的条纹实例
14.4.1 生成条纹
14.4.2 分析预过滤
14.4.3 自适应分析预过滤
14.4.4 分析积分
14.4.5 反走样的砖块片元着色器
14.5 频率限定
14.6 小结
14.7 参考资料
第15章 反真实着色器
15.1 剖面线实例
15.1.1 应用程序设置
15.1.2 顶点着色器
15.1.3 生成剖面线
15.1.4 获得一致的线条密度
15.1.5 光照
15.1.6 添加特征
15.1.7 剖面线片元着色器
15.2 技术示意图实例
15.2.1 应用程序设置
15.2.2 顶点着色器
15.2.3 片元着色器
15.3 Mandelbrot实例
15.3.1 Mandelbrot set简介
15.3.2 顶点着色器
15.3.3 片元着色器
15.3.4 Julia set
15.4 小结
15.5 参考资料
第16章 用于图像处理的着色器
16.1 几何图像变换
16.2 数学贴图
16.3 查找表操作
16.4 颜色空间变换
16.5 图像内插和外插
16.5.1 亮度
16.5.2 对比度
16.5.3 饱和度
16.5.4 锐度
16.6 混合模式
16.6.1 正常
16.6.2 平均
16.6.3 溶解
16.6.4 背面
16.6.5 清除
16.6.6 变暗
16.6.7 变亮
16.6.8 正片叠底
16.6.9 屏幕
16.6.10 颜色加深
16.6.11 颜色减淡
16.6.12 叠加
16.6.13 柔光
16.6.14 强光
16.6.15 相加
16.6.16 相减
16.6.17 差值
16.6.18 反差值
16.6.19 排除
16.6.20 不透明度
16.7 卷积
16.7.1 平滑
16.7.2 边缘检测
16.7.3 锐化
16.8 小结
16.9 参考资料
第17章 语言的比较
17.1 着色语言的历史
17.2 RenderMan
17.3 OpenGL Shader(ISL)
17.4 HLSL
17.5 Cg
17.6 小结
17.7 参考资料
附录A 语言的语法
附录B API函数参考
glAttachObjectARB
glBindAttribLocationARB
glCompileShaderARB
glCreateProgramObjectARB
glCreateShaderObjectARB
glDeleteObjectARB
glDetachObjectARB
glEnableVertexAttribArrayARB
glGetActiveAttribARB
glGetActiveUniformARB
glGetAttachedObjectsARB
glGetAttribLocationARB
glGetHandleARB
glGetinfoLogARB
glGetObjectParameterARB
glGetShaderSourceARB
glGetUniformARB
glGetUniformLocationARB
glGetVertexAttribARB
glGetVertexAttribPointervARB
glLinkProgramARB
glShaderSourceARB
glUniformARB
glUseProgramObjectARB
glValidateProgramARB
glVertexAttribARB
glVertexAttribPointerARB
后记
猜您喜欢