其他分享
首页 > 其他分享> > webgl 学习笔记 GLSL ES语法 - 数据类型

webgl 学习笔记 GLSL ES语法 - 数据类型

作者:互联网

基本数据类型

转换 float(4) 4.0 float(true) 1.0 float(false) 0.0

int(1.0) 1 int(true) 1 int(false) 0

bool(0) false bool(1) true

矢量类型

vec3 v3 = vec3(1.0, 1.2, 2.0)
vec2 v2 = vec2(v3) // 1.0, 1.2
vec4 v4 = vec4(1.0) // 1.0,1.0,1.0,1.0

ivec2 v2 = vec3(3, 4)

bvec4 v4 = bvec4(true, false, false, false)

矩阵

mat2 m2 = mat2( 1.3,1.4 , 1.2, 1.1) // [ 1.3, 1.2 , 1.4, 1.1]

分量名称

[
x,y,z,w
r,g,b,a,
s,t,p,q
]

数组

只支持一维数组

float floatArray[3]; // 声明长度是3位浮点类型的数组

const int size = 5; 
int size5 = 5;
float floatArray[size] // 必须是常量 
float floatArray[size5] //或报错 

结构体

struct light {
	vec4 color;
	vec3 position;
}

light lt1, lt2; //声明 light类型 变量 lt1  lt2
lt1 = light(vec4(1.0,1.0,1.0,0.2), vec3(8.0,3.3, 1.5))

vec4 color = lt1.color 
vec3 position = lt1.position 

函数

函数需要提前声明类型

float luma(vec4 color) {
	return color.r * 0.2 + color.g * 0.7 + color.b * 0.7;
}

attribute vec4 a_Color;
void main {
 float result = luma(a_Color);
}

或者

float luma(vec4);
attribute vec4 a_Color;
void main {
 float result = luma(a_Color);
}
float luma(vec4 color) {
	return color.r * 0.2 + color.g * 0.7 + color.b * 0.7;
}

//in 强制入参类型
float test(in vec3 color){
return 0.1;
}
//out
float test2(out float result){
	result = 0.5;
	return result;
}

标签:GLSL,1.0,color,webgl,float,数据类型,vec4,vec3,false
来源: https://blog.csdn.net/uk_51/article/details/122160312