着色器

作者: 大旺旺的弟弟小旺旺 | 来源:发表于2022-07-14 07:07 被阅读0次

着色器是运行在GPU上的一个程序,为了完成管线某个特定功能运行的,它只是将一个输入转化为输出的程序,他们只能输出和输入。

GLSL

它是专门来写着色器语言的,它包含了向量和矩阵操作的特性。

书写格式

  • 版本
  • 输入输出变量,uniform
  • main

可以设置的属性是有限制的,有点是16个,有点更多,这个可以进行查询

GL_MAX_VERTEX_ATTRIBS

int nrAttributes;
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &nrAttributes);
std::cout << "Maximum nr of vertex attributes supported: " << nrAttributes << std::endl;

支持的数据类型

int float double uint bool vector matrix

向量

GLSL中向量可以有234个分量,可以是任意类型

  • vecn n个float
  • bvecn n个bool
  • ivecn n和int
  • uvecn n个unsigned int分量
  • dvecn n个double分量的向量

可以通过.x,.y,.z,.w,还可以通过rgba的方式。

重组

vec2 someVec;
vec4 differentVec = someVec.xyxx;
vec3 anotherVec = differentVec.zyw;
vec4 otherVec = someVec.xxxx + anotherVec.yxzy;

任意组合

vec2 vect = vec2(0.5, 0.7);
vec4 result = vec4(vect, 0.0, 0.0);
vec4 otherResult = vec4(result.xyz, 1.0);

输入和输出

着色器是各自独立的小程序,都是整体的一部分,每个部分只关心输入什么,输出什么,对其它部分并不关心。in和out作为3.0的扛把子来实现。

attribute:属性输入
varying:属性值传递

in输入
out输出

顶点着色器向片段着色器中传递数据,它们的名字是一样的就可以了。

uniform

它是一种从cpu向Gpu发送数据的方式,但是uniform和顶点属性有些不同。

  • uniform是全局的,独一无二
  • 设置了unoform的值,就会一直的保持,直到重置或者更新

它是全局的,所以我们不需要通过顶点着色器这个中介来完成。

使用uniform

int vertexColorLocation = glGetUniformLocation(shaderProgram,"outColor");
glUniform4f(vertexColorLocation,0.0f,greenValue,0f,1f)

相关文章

  • OpenGL学习--着色器使用

    单元着色器 平面着色器 上色着色器 默认光源着色器 点光源着色器 纹理替换矩阵着色器 纹理调整着色器 纹理光源着色器

  • OpenGL ES 自定义着色器

    着色器 创建着色器 删除着色器 编译着色器 将着色器的源代码附着到着色器对象上。 开始编译着色器源代码。 创建与链...

  • OpenGL存储着色器

    1、初始化 2、存储着色器种类 单元着色器 平面着色器 上色着色器 默认光源着色器 点光源着色器 纹理替换矩阵着色...

  • OpenGL 固定管线下的着色器

    OpenGL 固定管线下为开发者提供了几种着色器:单元着色器、平面着色器、上色着色器、默认光源着色器、点光源着色器...

  • Unity3Dshader中的RenderType

    Opaque: 用于大多数着色器(法线着色器、自发光着色器、反射着色器以及地形的着色器)。Transparent:...

  • OpenGL的一些学习

    资料来源:逻辑教育 OpenGL 固定管线中常见的几种着色器 单元着色器 平面着色器 上色着色器 默认光源着色器 ...

  • 《WebGL 编程指南》笔记 —— 第九章 层次模型

    着色器对象与程序对象着色器对象:着色器对象管理一个顶点着色器或一个片元着色器。每一个着色器都有一个着色器对象。程序...

  • WebGL 3D概念讲解(着色器)

    着色器 1、顶点着色器 2、片元着色器

  • [OpenGL] - 图元

    1.存储着色器 GLShaderMananger 1.1 单位着色器 1.2 平面着色器 1.3 上色着色器 1....

  • OpenGL基本图元和固定管线

    OpenGL的7种基本图元 创建投影的方式 固定管线着色器 单元着色器 平面着色器 上色着色器 默认光源着色器 点...

网友评论

    本文标题:着色器

    本文链接:https://www.haomeiwen.com/subject/mcjxirtx.html