相关文章推荐
腹黑的领带  ·  python ...·  1 年前    · 
正直的小蝌蚪  ·  Range.TextToColumns ...·  1 年前    · 

(1)u_resolution 是画布尺寸,即代表画布宽高

(2)gl_FragCoord:是一个 vec4 类型的变量 (x, y, z, 1/w),其中 x, y 是当前片元的窗口坐标。直译就是片元坐标

2 结合例子理解

如下效果和代码

#ifdef GL_ES
precision mediump float;
#endif
// u_resolution (画布尺寸)
uniform vec2 u_resolution;
void main() {
	vec2 st = gl_FragCoord.xy/u_resolution;
	gl_FragColor = vec4(st.x,st.y,0.0,1.0);

如上画布宽高:(950,600)即u_resolution的宽高值是(950,600);

那么gl_FragCoord的取值范围就是 x在(0,950),y在(0,600)

所以vec2 st = gl_FragCoord.xy/u_resolution; st的x和y值都在0.0-1.0之间;

gl_FragCoord.xy/u_resolution在四个角的值为

左下角(0,0)处:x=0/950 y=0/600 st为(0.0,0.0);颜色值为(0.0,0.0,0.0,1.0)黑色

左上角(0,600)处:x=0/950 y600/600 st为(0.0,1.0);颜色值为(0.0,1.0,0.0,1.0)绿色

右上角(950,600)处:x=950/950 y=600/600 st为(1.0,1.0) ;颜色值为(1.0,1.0,0.0,1.0)黄色

右下角(950,0)处:x=950/950 y=0/600 st为(1.0,0.0);颜色值为(1.0,0.0,0.0,1.0)红色

共六章1.基础章节,从Shader1.0版本到新的4.5版本,介绍每一个版本中特性的用法;2.Tesslattion Shader应用/基础案例分析3.Gemotry Shader应用/基础案例分析4.Compute Shader应用/基础案例分析5.通过大量案例讲解分析/结合新特性,介绍用法6.性能调优,如果借助shader加速应用,让你的程序支撑百万级别的场景对象轻松应对 ShaderToy上用的shader语言glsl , 效果是用webgl跑的,而webgl封装了opengl es,  所以ShaderToy上的例子同样使用于Android端。 ShaderToy基本上 都是用fragment shader 对栅格化后的像素进行处 gl_FragCoordgl_FragDepth分别是片元着色器的输入和输出变量。 gl_FragCoord是个vec4,四个分量分别对应x, y, z和1/w。其中,x和y是当前片元的窗口相对坐标,不过它们不是整数,小数部分恒为0.5。x - 0.5和y - 0.5分别位于[0, windowWidth - 1]和[0, windowHeight - 1]内。windowWidth和windowHeight都以像素为单位,亦即用glViewPort指定的宽高。w即为乘过了投影矩阵之后点坐标的w,用于p 局部坐标系——》世界坐标系——》相机坐标系——》剪裁坐标系——》规范化设备坐标系——》屏幕坐标系 模型变换:world.xyzw = modelMatrix * position.xyzw; 视图变换::eye.xyzw = viewMaterix * world.xyzw; 投影变换:clip.xyzw = projectMatrix * eye.xyzw; 透视除法(w归1化):ndc.xyzw = clip.xyzw / clip.w; 视口变换:screen.xy = (nd gl_FragCoord 表示当前片元着色器处理的候选片元窗口相对坐标信息,是一个 vec4 类型的变量(x, y, z, 1/w), 其中 x, y 是当前片元的窗口坐标,OpenGL 默认以窗口左下角为原点, 在 着色器中通过布局限定符可以重新设定原点,比如窗口左上角为原点origin_upper_left,窗口大小由 glViewport() 函数指定。x, y 默认是像素中心 而非 整... vs: ` void main() { gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4( position, 1.0 ); fs: ` // 屏幕尺寸 uniform vec2 (26条消息) WebGL屏幕坐标系、canvas坐标系和WebGL坐标系转换——学习笔记_ponGISer的博客-CSDN博客https://blog.csdn.net/u011332271/article/details/110477 layout (location = 0) in vec3 aPos; // 位置变量的属性位置值为0 out vec4 vertexColor; // 为片段着色器指定一个颜色输出 void main() gl_Position = vec4(aPos... gl_Position,gl_FragCoordgl_PointCoord分别描述渲染管线中的顶点,片元,点域图元(点精灵/PointSprite)光栅化后的片元在各自坐标系中的大小;可以借助上图区分记忆。 gl_Position: 1.gl_Position描述的是顶点在世界坐标系中的坐标; 2.是绝对大小; gl_FragCoord: 1.gl_FragCoord描述的是片元在以Canvas画布窗口坐标系统中的坐标; 2.是绝对大小; 3.单位为像素; gl_PointCoord: 1.gl.