笔记:了解GLSL (OpenGL Shading Language)

GLSL 的产生,可以为了更灵活的3D图像编程

APP和GPU的关系图

GLSL 包括 Vertex programs 和 Fragment pgrograms, 实际是对 Geometry 和 Rasterization 的输出

管线处理如下,以前管线不能编程,现在GLSL让管线更灵活了。

Shader 的知识总结:

Shader: a small program for GPU ( like c language, 由 CPU 负责变异,GPU 负责运行,可以使用llvm技术)

Vertex Processor ( handle Vertex shader,  Vertex shader 是一个 main() 程序,作用在每一个Vertex上,控制量的输出:gl_Position)

Fragment Processor ( handle Fragment shader,也是一main  程序,作用在???上(待了解), gl_FragColor)

其它:shader Log and Cleanup

communication openGL -> GLSL

Uniform variables:  set by primitive  ( example see : http://www.clockworkcoders.com/oglsl/tutorial2.htm )

Attribute Variables: set inside glBegin/glEnd  ()

Simple:  float, bool, int

vec{2,3,4} a vector of 2,3,or 4 floats

bvec{2,3,4} bool vector

ivec{2,3,4} vector of integers

matrices 2×2, 3×3 and 4×4

The data types for texture sampling are:

sampler1D – for 1D textures

sampler2D – for 2D textures

sampler3D – for 3D textures

samplerCube – for cube map textures

sampler1DShadow – for shadow maps

sampler2DShadow – for shadow maps

Variable Qualifiers

const/attribute/uniform/varying

arrays and structs as C

Control Flow Statements  as C

Functions

The parameters of a function have the following qualifiers available:

in – for input parameters

out – for outputs of the function. The return statement is also an option for sending the result of a function.

inout – for parameters that are both input and output of a function

Varying Variables

varying float intensity;

A varying variable must be written on a vertex shader, where we compute the value of the variable for each vertex.

( varying example see : http://www.clockworkcoders.com/oglsl/tutorial4.htm)

http://www.clockworkcoders.com/oglsl/tutorials.html

http://www.opengl.org/documentation/glsl/

时间: 2024-08-10 14:59:14

笔记:了解GLSL (OpenGL Shading Language)的相关文章

纯Shading Language绘制飞机火焰效果

上篇<纯Shading Language绘制HTML5时钟>体现了GLSL可编程性特点,但没有体现GLSL可编程出各种酷炫效果的特点,今天我们将用纯Shading Language绘制火焰效果,并将其应用到<HT图形组件设计之道(四)>飞行的飞机例子上. 火焰的例子我已发在 http://js.do/hightopo/fireball,其本质在绘制gl.POINTS的点类型时,通过在Fragment Shader在点区域内生成noise的噪声用于绘制多种颜色效果,并将多次不同噪声算

纯Shading Language绘制HTML5时钟

今天是2014年的最后一天,这个时刻总会让人想起时钟,再过几个小时地球人都要再老了一岁,于是搞个HTML5版的时钟就是我们今天要完成的任务,实现HTML5的时钟绘制一般会采用三种方式,第一种采用CSS的实现方式,例如 http://www.css-tricks.com/examples/CSS3Clock/:第二种采用SVG的实现方式,例如 http://www.css-tricks.com/examples/CSS3Clock/:第三种采用Cavnas的2D绘制方式,如HT for Web中<

【csapp读书笔记3】x86 Assembly Language

这部分其实没什么好笔记的...毕竟和课本上的x86汇编是一样的 不过有需要pay attention的地方就是x86汇编有两种书写形式:Intel format和AT&T format (csapp  Page200) Intel format:就是常见于Microsoft和Intel的文档中.另外中国的教材也用这种format AT&T format:csapp就用的这种.另外gcc.objdump等工具反编译的代码默认也是这种格式 主要区别就是操作数中source和destinatio

OpenGL学习笔记之配置OpenGL

OpenGL是计算机图形学领域的一门入门语言,OpenGL开发库的一些文件在官网上可以下载到.里面包含三个文件,如下: 1.把在OpenGL开发库中LIB(库文件)glut.lib和glut32.lib(推荐把该文件下的库文件全部拷贝)这两个静态库函数库复制到文件目录的lib文件夹下 E:\编程软件\VC\lib. 2.将glut.dll,glut32.dll这两个动态库文件放到操作系统目录下面的C:\Windows\system32文件夹内(32位系统)和C:\Windows\SysWOW64

Unity3D 开发之shader教程(浅谈GPU渲染之shader language概述)

尊重他人智慧成果,欢迎转载,请注明作者 心若透明 地址  http://www.cnblogs.com/ubanck/p/4110618.html 在上一篇博客里,大致讲解了一下3D渲染的原理,即从一个简单的模型到渲染到屏幕的过程!其中提到了重要的坐标变换方式,说的不够清楚!今天来谈谈shader语言的执行过程 从硬件上讲,GPU内部有顶点着色器与片段着色器,从渲染管线来看,顶点着色器控制这顶点的坐标转换过程,片段着色器控制像素的颜色计算过程.顶点着色器将顶点转换完成,输入到片段着色器进行处理(

OpenGL基础概念

基本概念 透视(Perspective)变换(Transformation)投影矩阵(Projection Matrix):用于将3D坐标转换为2D屏幕坐标光栅化(Rasterization): 实际绘制或填充每个顶点之间的像素形成线段着色器(Shader) 是在图形硬件上执行的单独程序,用来处理顶点和执行光栅化任务纹理贴图(Texture Mapping)混合(Blending): 将不同的颜色混在一起可编程着色器(Programmable Shader)位平面(bitplane):指一块内存

在iOS上使用OpenGL ES渲染YUV

1)创建OpenGL context [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; 2)layer设置成不透明 _eaglLayer = (CAEAGLLayer*) self.layer; _eaglLayer.opaque = YES; 3)创建YUV texture glGenTextures(1, &m_nTexturePlanarY); glGenTextures(1, &m_nTexturePlana

opengl绘制三角形

顶点数组对象:Vertex Array Object,VAO 顶点缓冲对象:Vertex Buffer Object,VBO 索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO 渲染管线 在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素.3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线管理的.图形渲染管线可以被划分为两个主要部

OpenGL基础学习之三渲染知识

一.渲染的基础对象概念 1.顶点数组对象(VAO Vertex Array Object) 2.顶点缓冲对象(VBO Vertex Buffer Object) 3.索引缓冲对象(IBO Index Buffer Object) 4.图形渲染管线(Graphics Pipeline)图形渲染管线接受一组3D坐标,然后把它们转变为你屏幕上的有色2D像素输出 5.着色器(Shader 在显卡的小处理核心上各自运行的小程序,在图形渲染管线中快速处理你的数据 OpenGL使用的着色器语言为GLSL (O