位置: 编程技术 - 正文

GLSL语言内置变量(glsl编译)

编辑:rootadmin

推荐整理分享GLSL语言内置变量(glsl编译),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:glsl语言教程,glsl文件,glsl语言教程,glsl内置函数,glsl内置函数,glsl内置函数,glsl语言开发工具,glsl语言开发工具,内容如对您有帮助,希望把文章链接给更多的朋友!

转载于: 顶点属性

attribute vec4 gl_Color; // 顶点颜色

attribute vec4 gl_SecondaryColor; // 辅助顶点颜色

attribute vec3 gl_Normal; // 顶点法线

attribute vec4 gl_Vertex; // 顶点物体空间坐标(未变换)

attribute vec4 gl_MultiTexCoord[0-N]; // 顶点纹理坐标(N = gl_MaxTextureCoords)

attribute float gl_FogCoord; // 顶点雾坐标

&#;得一提的是用户可以调用glVertexAttrib设置自己的顶点属性(当然个数是有限制的)

一致变量——就是常说的Uniform,这是用户向GLSL传递自己数据的最常用方法,比如光源位置等等。之所以称为一致变量,是为了与易变变量相区别。不同于顶点属性在每个顶点有其自己的&#;,也不同于易变变量由顶点程序向片元程序插&#;传递,一致变量在一个图元的绘制过程中是不会改变的,而且可以在顶点shader和片元shader间共享。这部分变量主要用来描述OpenGL的状态,可以看作OpenGL状态机的复制。GLSL内置的一致变量包括:

// 矩阵状态

uniform mat4 gl_ModelViewMatrix; // 模型视图变换矩阵

uniform mat4 gl_ProjectMatrix; // 投影矩阵

uniform mat4 gl_ModelViewProjectMatrix; // 模型视图投影变换矩阵(ftransform())

uniform mat3 gl_NormalMatrix; // 法向量变换到视空间矩阵

uniform mat4 gl_TextureMatrix[gl_MatTextureCoords]; // 各纹理变换矩阵

// 普通缩放因子

uniform float gl_NormalScale;

// 窗口坐标深度范围

struct gl_DepthRangeParameters

{

float near;

float far;

float diff; // far-near

};

uniform gl_DepthRangeParameters gl_DepthRange;

// 裁剪平面

uniform vec4 gl_ClipPlane[gl_MaxClipPlanes];

// 点属性

struct gl_PointParameters

{

float size;

float sizeMin;

float sizeMax;

float fadeThresholdSize;

float distanceConstantAttenuation;

float distanceLinearAttenuation;

float distanceQuadraticAttenuation;

};

uniform gl_PointParameters gl_Point;

// 材质

struct gl_MaterialParameters

{

vec4 emission; // 自身光照Ecm

vec4 ambient; // 环境光吸收系数Acm

vec4 diffuse; // 漫反射吸收系数Dcm

vec4 specular; // 镜面反射吸收系数Scm

float shininess; // Srm

};

uniform gl_MaterialParameters gl_FrontMaterial; // 正面材质

uniform gl_MaterialParameters gl_BackMaterial; // 反面材质

// 光源性质,参数性质就不解释了,和OpenGL的三种光源性质是一样的

struct gl_LightSourceParameters

{

vec4 ambient; // Acii

vec4 diffuse; // Dcii

vec4 specular; // Scii

GLSL语言内置变量(glsl编译)

vec4 position; // Ppii

vec4 halfVector; // Hi

vec3 spotDirection; // Sdli

float spotExponent; // Srli

float spotCutoff; // Crli

float spotCosCutoff; // cos(Crli)

float constantAttenuation; // K0

float linearAttenuation; // K1

float quadraticAttenuation; // K2

};

uniform gl_LightSourceParameters gl_LightSource[gl_MaxLights];

struct gl_LightModelParameters

{

vec4 ambient; // Acs

};

uniform gl_LightModelParameters gl_LightModel;

// 光照和材质的派生状态

struct gl_LightModelProducts

{

vec4 sceneColor; // Ecm&#;Acm*Acs

};

uniform gl_LightModelProducts gl_FrontLightModelProduct;

uniform gl_LightModelProducts gl_BackLightModelProduct;

struct gl_LightProducts

{

vec4 ambient; // Acm * Acli

vec4 diffuse; // Dcm * Dcli

vec4 specular; // Scm * Scli

};

uniform gl_LightProducts gl_FrontLightProduct[gl_MaxLights];

uniform gl_LightProducts gl_BackLightProduct[gl_MaxLights];

// 纹理环境和生成

unifrom vec4 gl_TextureEnvColor[gl_MaxTextureImageUnits];

unifrom vec4 gl_EyePlaneS[gl_MaxTextureCoords]; 

unifrom vec4 gl_EyePlaneT[gl_MaxTextureCoords];

unifrom vec4 gl_EyePlaneR[gl_MaxTextureCoords];

unifrom vec4 gl_EyePlaneQ[gl_MaxTextureCoords];

unifrom vec4 gl_ObjectPlaneS[gl_MaxTextureCoords];

unifrom vec4 gl_ObjectPlaneT[gl_MaxTextureCoords];

unifrom vec4 gl_ObjectPlaneR[gl_MaxTextureCoords];

unifrom vec4 gl_ObjectPlaneQ[gl_MaxTextureCoords];

// 雾参数

struct gl_FogParameters

{

vec4 color;

float density;

float start;

float end;

float scale; // 1/(end-start)

};

uniform gl_FogParameters gl_Fog;

易变变量——易变变量只能在顶点shader和片元shader间传递,这期间实际上经过了一个光栅化的过程。内置的易变变量比较少,如下:

varying vec4 gl_Color;

varying vec4 gl_SecondaryColor;

varying vec4 gl_TexCoord[gl_MaxTextureCoords];

varying float gl_FogFragCoord;

熟悉图形管线的话可以自己描绘出这些易变变量是如何在顶点和片元程序间进行传递的。

内置常量——内置常量描述了显卡的渲染能力,依据各个显卡而定,这里就不一一列举了,如果想要查询的话可以用OpenGL的glGet函数获取MAX/MIN一族的常量&#;,这些&#;和内置变量的&#;是一致的。

图形学实验二:画个火柴人 由于接下来的实验要实现火柴人的动作,所以实验要求要采用分层设计,如下图所示:这样转动hip(臀部),整个火柴人就整体转动。比如如果要动左

openGL光照(illumination) 在复习图形学illumination时,偶然看到网上将光照的博客,觉得挺好,就转了下~链接:

OpenGl学习之坐标变换(上) 坐标变换是深入理解三维世界的基础,非常重要。学习这部分首先要清楚几个概念:视点变换、模型变换、投影变换、视口变换。在现实世界中,所有

标签: glsl编译

本文链接地址:https://www.jiuchutong.com/biancheng/373193.html 转载请保留说明!

上一篇:OpenGL 多边形偏移高亮物体边 Polygon offset(opengl绘制多个图形)

下一篇:图形学实验二:画个火柴人(图形学题目)

  • 汇算清缴补交所得税后报表需要调整吗
  • 从租计征房产税低于从价计征房产税
  • 何为金税四期
  • 企业买车算固定收入吗
  • 查账征收的个体户怎么报税
  • 销售货物未开发怎么处理
  • 购进农产品取得3%专票怎样计算抵扣举例
  • 简易征收的项目是否可以实行30万免税
  • 企业购进货物发生的下列相关税费中,应计入货物
  • 应收票据质押会计处理
  • 内控制度包括哪些制度
  • 承兑汇票私人贴现账务怎么处理
  • 单位日常发的钱都有哪些
  • 5.0车船税和交强险一年多少钱
  • 转让土地使用权 简易征收
  • 营改增后租金如何交税
  • 办公设备的税收编码
  • 金税盘可以异地使用吗
  • 企业间拆借应收利息记哪个科目?
  • 超市收取的返利的税收处理
  • 增值税纳税申报表怎么填
  • 小规模纳税人的认定标准是什么
  • 自产货物自用账务处理
  • 股权转让相关手续
  • 工会经费使用具体办法
  • 其他货币资金包括哪些内容
  • 收到退回多付款现金流量支付购买商品支付
  • kb4586819更新
  • PHP:curl_strerror()的用法_cURL函数
  • php7数据库操作
  • php graph
  • 增值税加计扣除比例
  • 累计税费怎么计算
  • nginx安装配置视频
  • js面试2021
  • php屏蔽ip
  • 金蝶软件做帐流程
  • 预付采购材料款60000元
  • 现代服务业加计抵减最新政策2022
  • vant的Uploader 文件上传,图片数据回显问题
  • phpmail
  • 什么叫动量交易
  • 政府补贴流程
  • 制造车间买来刀具怎么办
  • 公司捐赠给个人公司要交税吗
  • 去年的财务报表网上更正申报
  • 不认证的发票可以作废吗
  • 个体户开票额度超了
  • SQL Server 2008 R2 为用户权限分配的操作步骤
  • 购买的机械设备算固定资产吗
  • db2 linux
  • 全资子公司可以转让吗
  • 授权支付银行有权不给发么
  • 公司收到社保打款怎么办
  • 有外经证还要缴纳企业所得税吗
  • 去年的福利费没有用完,今年可以用吗
  • 结转已到期未兑现的商业承兑汇票会计分录
  • 保理融资的费用由谁承担
  • 弱电系统可以入户门吗
  • 上月有留抵税额本月怎么申报
  • 著作权使用费收费标准
  • navicat查询结果下面输出栏如何关闭
  • solaris syslog
  • windows2003服务不能开启
  • win10蓝屏stopcode
  • 苹果电脑优酷视频播放不了
  • linux删除用户组和用户
  • win8.1专业版是哪个
  • windows8.1的设置在哪
  • 虚拟内存扩大有什么好处
  • win10正式版版本
  • 电脑升级到win11会卡吗
  • win8.1怎么样
  • linuxat命令的用法
  • perl 批量注释
  • python-flask
  • 百度关键字搜索员是干嘛的
  • 三代手续费退还银行网点变更怎么办
  • 福建生育津贴要交满几个月
  • 税务局人事工作总结(税务局工作人员年度工作总结报告)
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设