http://www.cnblogs.com/tkgamegroup/p/4214081.html 这周学了好多.包括伪随机数.柏林噪声.先说伪随机数.伪随机数我们用的是周期函数而不是那种由前一项乘一个超大的数取余数的方法.使用周期函数的好处就是可以让其随时间均匀变化.不过使用周期函数一定要保证周期非常长,不然就会出现重复的图样.这是我在网上找到的一个伪随机函数:cos(x * (12.9898) + y * (4.1414)) * 43758.5453它使用x, y作为参数,刚好对应像素的坐标…
对实现动画的前端同学们来说,canvas可以说是最自由,最能全面控制的一个动画实现载体.不但能通过javascript控制点.线.面的绘制,使用图片资源填充:还能改变输入参数作出交互动画,完全控制动画过程中的动作轨迹.速度.弹性等要素. 但使用canvas开发过较复杂一点的动画的同学,可能会发现,完全使用javascript绘制.控制的动画,某些效果不太好实现(这篇文章只讨论2D),像模糊,光照,水滴等效果.虽然用逐像素处理的方法也可以实现,但javascript对这类型大量数据的计算并不擅长,…
除了使用Cg/HSL 着色器程序以外, OpenGL 着色器语言(GLSL)着色器可以直接书写shader. 然而,使用原生的GLSL只推荐作为测试使用,或者你清晰的知道你的目标平台是 Mac OS  X,OpenGL ES移动设备,或者是Linux.在所有常见情况下,Unity会将 Cg/HLSL语言编译为优化过的GLSL语言. GLSL 片段 GLSL程序片段写在GLSLPROGRAM和ENDGLSL关键字之间. 在GLSL中,所有着色器功能入口被叫做main().当unity加载GLSL着…
OpenGLES2.0中是强制使用可编程的渲染管线的,使用的是glsl着色器语言,因为着色器语言是使用的GPU,即图形处理单元,而不是CPU,这样可以使CPU从繁重的几何计算和像素的处理中解脱出来了.这就加大了处理的速度. 下面的这篇教程是转载的.原文地址如下,感谢作者manyou http://www.apkbus.com/blog-99192-39382.html 一.着色语言基础 数据类型概述 1. 标量 标量也被称为“无向量”其值只有大小,并不具有方向.标量之间的运算遵循简单的代数法则,…
在这一小节,主要学习GLSL的基本数据类型以及控制结构.GLSL具备了C++和Java的很多特性,我们会先了解所有着色阶段共有的特性,再了解各个着色器的专属特性. 1.着色器的基本结构 一个着色器程序和一个C程序类似,都是从main()函数开始执行的.同样支持单行注释//以及多行注释/**/ #version 330 core void main(){ // add test code }  2.着色器的数据类型 GLSL是一种强类型的语言,所有变量使用前的必须声明.可用字母.数字.以及下划线字…
前言 由于在Direct3D 11中取消了固定管线,要想绘制图形必须要了解可编程渲染管线的流程,一个能绘制出图形的渲染管线最少需要有这两个可编程着色器:顶点着色器和像素着色器. 本章会直接跳过渲染管线的工作原理,直接来到编程实战. 接下来的目标如下: 通过Visual Studio自带的HLSL编译器生成顶点着色器和像素着色器 (可选)通过D3DComplier在运行期编译/生成着色器二进制文件 将着色器绑定到渲染管线上 了解顶点缓冲区,并将它绑定到输入装配阶段 完成上面的操作后就可以渲染出第一…
写在前面 目前,我们在着色器中要传递多个uniform变量时,总是使用多个uniform,然后在主程序中设置这些变量的值:同时如果要在多个shader之间共享变量,例如投影矩阵projection和视变换矩阵view的话,仍然需要为不同shader分别设置这些uniform变量.本节将为大家介绍interface block,以及基于此的uniform buffer object(UBO),这些技术将简化着色器中变量的传递和共享问题.本节示例程序均可以从我的github下载. 本节内容参考自:…
目录 Shader是什么 GLSL 数据类型 输入与输出 顶点着色器向片段着色器发送数据 Uniform 制作三色渐变三角形 对着色器程序进行封装 参考资料:OpenGL中文翻译 Shader是什么 着色器(Shader)是运行在GPU上的小程序.这些小程序为图形渲染管线的某个特定部分而运行.从基本意义上来说,着色器只是一种把输入转化为输出的程序.着色器也是一种非常独立的程序,因为它们之间不能相互通信:它们之间唯一的沟通只有通过输入和输出. GLSL 着色器是使用一种叫GLSL的类C语言写成的.…
读取一个模型到节点node,然后想对node施加一些特效,这时可以只使用片段着色器 其中: gl_Color表示固定管线计算出来的颜色,包含光照效果 gl_TexCoord[]表示纹理坐标 uniform sampler2D tex;//tex可以随便命名,如果只有一张纹理 void main() { //模型顶点颜色 vec4 c0=gl_Color; //如果有纹理的话,获取纹理颜色 vec4 c1 = texture2D(tex,gl_TexCoord[].st); //混合一下 vec4…
[OpenGL ES 02]OpenGL ES渲染管线与着色器 罗朝辉 (http://www.cnblogs.com/kesalin/) 本文遵循"署名-非商业用途-保持一致"创作公用协议 前言 在前文<[OpenGL ES 01]iOS上OpenGL ES之初体验> 中我们学习了如何在 iOS 平台上设置OpenGL ES 环境,主要是设置 CAEAGLLayer 属性,创建 EAGLContext,创建和使用 renderbuffer 和 framebuffer,并知…