GLSL语言学习笔记

1、什么是渲染管线?

    渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的的并行处理单元。

 

2、管线的大致工作流程

    顶点着色器中处理所有定点的位置、颜色,传递给下一阶段组装成精灵、线条和三角形,并根据视截体的可视范围来进行裁剪(抛弃不可见的元素),最后由片段着色器进行光栅化处理,光栅化的片段数量会远远高于顶点的数量。

 

3、着色器的数据类型

    ⑴:顶点着色器

        attribute //用户自定义的,包含每个定点的属性数据,如定点位置、定点颜色等

        uniform //用户自定义的,服务于所有定点的一个统一的值,如变换矩阵、光源位置等

        varying //用户自定义的,用于向片段着色器输出数据

        gl_Position //用户自定义的,用户接受顶点着色器的运算输出结果

        

attribute float size;
attribute vec3 customColor;
attribute float time;
uniform float globalTime; 

varying vec3 vColor;
varying float fAlpha;

void main() {
	
	vColor = customColor;
		
	vec3 pos = position;
		
	float animTime = min(1.4, max(1.0, globalTime - time));
		
	vec3 animated = vec3( pos.x * animTime, pos.y * animTime, pos.z * animTime );
		
	vec4 mvPosition = modelViewMatrix * vec4( animated, 1.0 );
		
	fAlpha = 1.0; + 
		
	gl_PointSize = size * ( 300.0 / length( mvPosition.xyz ) );
	
	gl_Position = projectionMatrix * mvPosition;
		
}

 

 

 

 

     ⑵:片段着色器

        varying//用户自定义的,用于接收由片段着色器发送的数据

        uniform//用户自定义的,服务于所有片段的一个恒定的值,如颜色等

        sampler//用户自定义的,用户纹理操作的一种特殊类型

        gl_FragColor//系统内置变量,用于接收片段着色器的输出结果

        precision mediump float;//精度限定符,声明于片段着色器的起始位置

        

precision mediump float;    // lowp, mediump, highp 
uniform vec3 color;
uniform sampler2D texture;
	
varying vec3 vColor;
varying float fAlpha;
	
void main() {
	
	float depth = gl_FragCoord.z / gl_FragCoord.w;
	float near = 100.0;
	float far = 400.0;
	float fog = 0.0 + smoothstep( near, far, depth );
	
	vec4 outColor = texture2D( texture, gl_PointCoord );
	if ( outColor.a < 0.24 ) discard; 
	
	gl_FragColor = vec4( color * vColor, fAlpha ); 
	gl_FragColor = gl_FragColor * outColor; 
	gl_FragColor = mix( gl_FragColor, vec4( vec3(0.0,0.0,0.0), gl_FragColor.w ), fog );
	
}

 

        

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值