Shader 代码

第一个着色器代码

// vertexShader 顶点着色器 uniform mat4 projectionMatrix; // 矩阵将坐标转换为剪辑空间坐标 uniform mat4 viewMatrix; // 应用相对于相机的转换(位置,旋转,视野,近,远) uniform mat4 modelMatrix; // 应用相对于网格的转换(位置,旋转,比例) attribute vec3 position; void main(){ gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position,1.0); // gl_Position = vec4(position, 1.0); // 不能去掉哪些 } // fragmentShader 片段着色器 precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); }

第二个着色器代码

// vertexShader 顶点着色器 uniform mat4 projectionMatrix; // 矩阵将坐标转换为剪辑空间坐标 uniform mat4 modelViewMatrix; // 应用相对于网格的转换(位置,旋转,比例) attribute vec3 position; void main() { gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); } // fragmentShader 片段着色器 precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); }

第三个着色器代码

// vertexShader 顶点着色器 uniform mat4 projectionMatrix; uniform mat4 modelMatrix; uniform mat4 viewMatrix; attribute vec3 position; void main() { vec4 modelPosition = modelMatrix * vec4(position, 1.0); vec4 viewPosition = viewMatrix * modelPosition; vec4 projectedPosition = projectionMatrix * viewPosition; gl_Position = projectedPosition; } // fragmentShader 片段着色器 precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); }

扭曲的平面着色器

// vertexShader 顶点着色器 uniform mat4 projectionMatrix; uniform mat4 modelMatrix; uniform mat4 viewMatrix; attribute vec3 position; void main() { vec4 modelPosition = modelMatrix * vec4(position, 1.0); modelPosition.z += sin(modelPosition.x * 10.0) * 0.1; vec4 viewPosition = viewMatrix * modelPosition; vec4 projectedPosition = projectionMatrix * viewPosition; gl_Position = projectedPosition; } // fragmentShader 片段着色器 precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); }

片段着色器 gl_FragColor

// vertexShader 顶点着色器 uniform mat4 projectionMatrix; uniform mat4 modelMatrix; uniform mat4 viewMatrix; attribute vec3 position; void main() { vec4 modelPosition = modelMatrix * vec4(position, 1.0); modelPosition.z += sin(modelPosition.x * 10.0) * 0.1; vec4 viewPosition = viewMatrix * modelPosition; vec4 projectedPosition = projectionMatrix * viewPosition; gl_Position = projectedPosition; } // fragmentShader 片段着色器 precision mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); }

缓冲几何体的attributes会传到着色器里面

【END】

本文链接:

版权声明:本博客所有文章除声明转载外,均采用 BY-NC-SA 3.0 许可协议。转载请注明来自 GhostCat。

阅读 135 | 发布于 2021-08-06
暂无评论