- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
11Android多媒体开发-着色语言汇编
11.3 片元着色器中浮点变量的精度 可以指定整个着色器中浮点数的默认精度: precision 精度 类型; 精度可选择lowp、 mediump、highp precision mediump float; 也可独立指定变量精度: lowp float color; mediump vec2 Coord; highp mat4 m; 11.4 特殊的内建变量 顶点着色器的内建变量 gl_Position: 顶点着色器从应用程序中获得原始的顶点位置数据,这些原始的顶点数据在顶点着色器中经过平移、旋转、缩放等数学变换后,生成新的顶点位置。 新的顶点位置通过在顶点着色器中写入gl_Position 传递到渲染管线的后继阶段继续处理。 gl_Position 的类型是vec4,写入的顶点位置数据也必须与其类型一致。几乎在所有的顶点着色器中都必须对gl_Position 写入适当的值,否则后继阶段的处理结果将是不确定的。 gl_PointSize: 顶点着色器中可以计算一个点的大小〈单位为像素〉,并将其赋值给gl_PointSize (标量float类型〉以传递给渲染管线。 如果没有明确赋值的话,就是采用默认值1 了。 gl_PointSize 的值一般只有在采用了点绘制方式之后才有意义。 片元着色器的内建变量 内建输入变量 gl_FragCoord ( vec4 类型〉中含有当前片元相对于窗口位置的坐标值x、y、z 与1/w。 其中x 与y 分别为片元相对于窗口的二维坐标。如果窗口的大小为800*480 (单位为像素〉,那么x 的取值范围为0~800, y 的取值范围为0~480, z 部分为该片元的深度值。 gl_FrontFacing(bool类型),正在处理的片元是否属于光栅化阶段生成的正面图元的一部分,正面该值为true,反面为false。 内建输出变量 gl_FragColor(vec4),片元颜色值,用于随后渲染管线的像素操作。 gl_FragData[](vec4),使用glDrawBuffers输出的数据数组。不能与gl_FragColor结合使用。 11.5 内置函数 角度转换与三角函数 指数函数 几何函数 矩阵函数 向量关系函数 纹理采样函数 微分函数 OpenGL ES着色语言 OpenGL ES着色语言是一种图形编程语言,源自C语言,同时具有RenderMan以及其他着色语言的一些优良特性,易于被开发人员掌握。 对顶点着色器、片元着色器使用同样的语言。 基于C/C++的语法及流程控制。 完美支持向量与矩阵的各种操作。 通过类型限定符来管理输入和输出。 拥有大量的内置函数来提供丰富的功能。 RenderMan是一个计算机图像渲染体系,准确地说是一套基于著名的REYES渲染引擎开发的计算机图像渲染规范,所有符合这个规范的渲染器都称为RenderMan兼容渲染器。 11.1 数据类型 标量(无向量,只具有大小,没有方向) 浮点型(float) 布尔型(bool) 整形(int) 矩阵型(matrix) Mat2 2*2的浮点数矩阵 Mat3 3*3的浮点数矩阵 Mat4 4*4的浮点数矩阵 向量型 采样型 结构体 数组 向量型 向量类型 说明 vec2 包含了2个浮点数的向量 vec3 包含了3个浮点数的向量 vec4 包含了4个浮点数的向量 ivec2 包含了2个整数的向量 ivec3 包含了3个整数的向量 ivec4 包含了4个整数的向量 bvec2 包含了2个布尔数的向量 bvec3 包含了3个布尔数的向量 bvec4 包含了4个布尔数的向量 采样器 采样器类型 说明 sampler2D 用于访问二维纹理 sampler3D 用于访问三维纹理 samplerCube 用于访问立方贴图纹理 结构体 类似C语言的结构体定义,也是用关键字struct 例子: struct info{ vec3 color; //颜色成员 vec3 position; //位置成员 vec2 textureCoor; //纹理坐标成员 } Info CubeInfo; 11.2 限定符 attribute:一般 用于每个顶点都不相同的量,如顶点位置、颜色等。 用attribute修饰的变量是有宿主程序(比如Java)批量传人渲染管线,管线进行基本处理后传递给顶点着色器,有多少顶点,就调用多少次顶点着色器(不能用于片元着色器)。 主流的GPU都配置了几套到几百套不等的顶点着色器硬件,通过并行执行大大提高渲染速度。 uniform:一般用于对同一组顶点组成的单个3D物体中所有顶点都相同的量,如当前的光源位置。 可以用于顶点着色器和片元着色器。 varying:用于从顶点着色器传递到片源着色器的量 con
原创力文档


文档评论(0)