gpuguide.pdf
ARB (GPU assembly language) guide. ARB - OpenGL Assembly Language is a low-level shading language. It was created by the OpenGL ARB to standardize GPU instructions controlling the hardware graphics pipeline. ### 关于ARB (GPU Assembly Language) Guide的知识点 #### 一、ARB (GPU Assembly Language) 概述 ARB (GPU Assembly Language) 是一种用于编写低级着色器程序的语言,它由OpenGL ARB(Architecture Review Board)开发并标准化,旨在为控制硬件图形流水线提供一套统一的指令集。这种语言特别适用于需要对图形处理单元(GPU)进行精确控制的应用场景,如高性能计算、游戏开发等。 #### 二、ARB Shader Assembly Language 的应用范围 ARB Shader Assembly Language 支持多种OpenGL扩展,包括但不限于: - **ARB_vertex_program**: 用于顶点着色。 - **ARB_fragment_program**: 用于片段着色。 - **NV_vertex_program1-4**: NVIDIA 提供的顶点着色程序。 - **NV_fragment_program1-4**: NVIDIA 提供的片段着色程序。 - **NV_geometry_program4**: NVIDIA 提供的几何着色程序。 - **NV_gpu_program4**: NVIDIA 提供的通用GPU程序。 这些扩展提供了对GPU的不同级别的访问权限,使开发者能够更深入地定制渲染过程。 #### 三、OpenGL® SUPPORT FUNCTIONS OpenGL 提供了一系列函数来支持ARB Shader Assembly Language的使用: - **glGenProgramsARB()** 或 **glGenProgramsNV()**: 生成一个或多个着色器程序对象的名称。 - **glBindProgramARB()** 或 **glBindProgramNV()**: 将一个着色器程序绑定到当前上下文。 - **glProgramStringARB()** 或 **glLoadProgramNV()**: 将着色器程序的源代码加载到指定的着色器程序对象中。 - **glDeleteProgramsARB()** 或 **glDeleteProgramsNV()**: 删除一个或多个着色器程序对象。 - **glVertexAttrib*ARB()**: 设置每个顶点的属性值。 - **glProgramEnvParameter*ARB()**: 设置全局环境常量。 - **glProgramLocalParameter*ARB()**: 设置每个程序的常量。 #### 四、数据类型与参数类型 ARB Shader Assembly Language 支持以下数据类型和参数类型: - **DATATYPES**: 所有ARB装配变量都是float4向量类型。 - **PARAMETERTYPES**: 包括 `Attrib`(每顶点属性)、`Local`(在给定的着色器传递中应用的参数)和 `Env`(应用于所有程序的参数)。 - **DATATYPEQUALIFIERS**: 包括 `ADDRESS`(寄存器变量)、`ATTRIB`(每顶点属性)、`PARAM`(常量,可以是 Env 或 Local)和 `TEMP`(临时变量)。 - **VARIABLETYPEMODIFIERS**: 支持 `SHORT`, `LONG`, `INT`, `UINT`, `FLOAT` 等类型修饰符。 - **VECTORCOMPONENTS**: 全面支持向量分量的交换,例如 `ADDR0.xy`, `V1.zw`, `V2.zw`。 - **MATRIXMODIFIERS**: 包括 `inverse` 和 `transpose`。 #### 五、指令集 ARB Shader Assembly Language 包含丰富的指令集,例如: - **ABS vv**: 计算绝对值。 - **ADD vv, v**: 进行加法运算。 - **ARL as**: 地址寄存器加载。 - **CMP vv, v, v**: 进行比较操作。 - **COS ssss**: 计算余弦值,并将角度转换为 [-π, π] 范围内。 - **DP3 ssss v, v**: 计算两个向量的3个分量的点积。 - **DP4 ssss v, v**: 计算两个向量的4个分量的点积。 - **DPH ssss v, v**: 计算齐次坐标下的点积。 - **DST vv, v**: 计算距离向量。 - **EX2 ssss**: 计算2的指数。 - **EXP vs**: 计算2的指数(近似)。 #### 六、语法示例 - **注释行**: 以 `#` 开头,如 `# some comment here`。 - **开始程序行**: 使用 `!!ARBvp*`, `!!NVvp*`, `!!ARBfp*`, `!!NVfp*`, `!!NVgp4.0` 等表示着色器类型。 - **结束程序行**: 使用 `END` 结束程序。 ARB Shader Assembly Language 提供了对GPU底层的直接访问能力,使得开发者能够在特定应用场景下实现更高效的图形渲染和计算任务。通过对上述知识点的学习和掌握,开发者可以更好地利用GPU的计算能力,提升应用程序的性能。
- lfrdreamman19862013-03-24很有用,解决了大问题
- 粉丝: 275
- 资源: 36
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助