OpenGL Shader编程语言

本文详细介绍了OpenGL中的一些核心内置变量,如gl_Position、gl_PointSize等,以及常用的函数库,包括数学运算、角度三角函数、指数函数等。同时,还涵盖了矩阵操作和几何函数,如距离计算、向量点积和法线处理。这些内容对于理解OpenGL的图形渲染过程至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内置的特殊变量

 highp vec4 gl_Position放置顶点坐标信息
 mediump float gl_PointSize 需要绘制点的大小
 mediump vec4 gl_FragCoord片元在framebuffer画面的相对位置 
 bool gl_FrontFacing 标志当前图元是不是正面图元的一部分 
 mediump vec2 gl_PointCoord 经过插值计算后的纹理坐标,点的范围是0.0到1.0
 mediump vec4 gl_FragColor设置当前片点的颜色
 mediump vec4 gl_FragData[n] 设置当前片点的颜色,使用glDrawBuffers数据数组。

内置函数库

 T abs(T x)返回x的绝对值
 T sign(T x)比较x与0的值,大于,等于,小于分别返回1.0,0.0,-1.0
 T floor(Tx)返回<=x的最大整数
 T ceil(T x)返回>=等于x的最小整数
 T fract(T x)获取x的小数部分
 T mod(Tx, Ty)
 T mod(T x, float y)取x,y的余数
 T min(T x, Ty)
 T min(T x, float y)取x,y的最小值
 T max(Tx, Ty)
 T max(T x, float y)取x,y的最大值
 T clamp(T x, T minVal, T maxVal)
 T clamp(T x, float minVal,float maxVal) min(max(x, minVal), maxVal), 返回值被限定
 在minVal,maxVal之间
 T mix(T x, Ty, Ta)
 T mix(T x, Ty, float a)取x,y的线性混合,x*(1-a)+y*a
 T step(T edge, Tx)
 T step(float edge, Tx)如果x<edge返回0.0 否则返回1.0
 T smoothstep(T edge0, T edge1, Tx)
 T smoothstep(float edge0,float edge1, Tx)如果x<edgeo 返回 0.0
 如果x>edge1返回1.0,否则返回Hermite插值

角度三角函数:

T radians(T degrees)
角度转弧度
 T degrees(T radians)
弧度转角度
 T sin(T angle)
正弦函数,角度是弧度
 T cos(T angle)
余弦函数,角度是弧度
 T tan(T angle)
正切函数,角度是弧度
 T asin(T x)
反正弦函数,返回值是弧度
 T acos(T x)
反余弦函数,返回值是弧度
 T atan(T y, Tx)
 T atan(Ty_over_x)
反正切函数,返回值是弧度

指数函数:

T pow(T x, Ty)
返回x的y次幕xy
T exp(Tx)
返回x的自然指数幕ex
T log(T x)
返回x的自然对数In
T exp2(T x)
返回2的x次幕2x
T log2(T x)
返回2为底的对数log2
T sqrt(T x)
开根号vx
T inversesqrt(Tx)
先开根号,在取倒数,就是1/Vx

矩阵函数:

mat matrixCompMult(mat x, mat y)
将矩阵x和y的元素逐分量相乘

几何函数:

 float length(Tx)
返回矢量x的长度
 float distance(T po, Tp1)
返回po p1两点的距离
 float dot(T x, Ty)
返回x y的点积
 vec3 cross(vec3 x, vec3 y)
返回x y的叉积
 T normalize(Tx)
对x进行归一化,保持向量方向不变但长度变为1
 T faceforward(T N. TI T Nref)
根据 矢量N与Nrei调整法问量
 T reflect(TI, TN)
返回1-2*dot(N,I)*N,结果是入射矢量
关于法向量N的镜面反射矢量
 T refract(TI, T N, float eta)
返回入射矢量关于法向量N的折射矢量,
折射率为eta
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rnwater

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值