卜若的代码笔记-webgl系列-第十三章:glsl探索(一)$glsl基础$

1 顶点shader:VertexShader主要功能

1.1使用模型视图以及投影矩阵进行顶点变换

1.2 法线变换及归一化

1.3 纹理坐标生成和变换

1.4 逐顶点或者逐像素光照计算

1.5 颜色计算

 

需要注意的是,顶点处理器在没有被指定之前呢,是属于固定管线的范畴,一旦你指定了相关的顶点处理器之后呢,就意味着,必须按照顶点处理器的处理来干活了

 

2片元着色器fragmentShader

2.1 组像素计算颜色和纹理坐标

2.2 应用纹理

2.3 雾化计算

2.4 逐像素光照,计算法线

GLSL本质上是一种语言,无论你在怎么骚,还是一种语言。数据结构是必须的!!!!!!!!!!!!!

 

数据类型:

vec3 v3 = vec3(1,2,3)//显然,这是一个顶点数据结构

float f = v3.x //显然这是一个浮点类型

vec2 v2 = v3.xy//这种写法叫做混合 = vec2(v3.x,v3.y)swizzing

mat4 m4 = mat4(1,2,3,4,5,6,7,8,2,2,3,4,5,6,7,8)//矩阵类型

float m23 = m4[2][3]//获取矩阵的某些值

float floatArray[4]//声明含有4个浮点元素的数组

vec4 vec4Array[2]//声明含有两个vec4对象的数组

int i = 5;//整形类型

unitform sampler2D samlper//取样器,存在两种类型sampler2D 和 samplerCube

//唯一能够赋值给取样变量的就是纹理单元编号,而且必须使用Webgl的方法gl.uniform1i(u_Smapler,0);

函数声明规范:c语言规范

 

内置函数:

存储限定字

通常情况下,使用三种限定符:attribute,varing,uniform来进行限定

当然有时候,我们使用const限定字,表示着色器中的某个变量

 

 

unitform:全局,只读,除了数组或者结构体之外的任意变量,如果顶点着色器VertexShader和片元着色器FragmentShader中生命了同名的uniform变量,那么它就会被两种着色器共享。

 

varing:全局,任务是从顶点着色器向片元着色器传输数据,我们必须在两种的着色器中声明同名,同类型的varing变量。

它的类型只能是以下类型:float,vec2,vec3,vec4,mat2,ma

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值