1079: [SCOI2008]着色方案Time Limit:10 SecMemory Limit:162 MBSubmit:822Solved:525[Submit][Status]Description有n个木块排成一行,从左到右依次编号为1~n。你有k种颜色的油漆,其中第i种颜色的油漆足够涂c...
分类:
其他好文 时间:
2014-08-23 13:51:30
阅读次数:
300
自学龙书,目前进度为第四章,这次完成的小程序由两个旋转的蓝色水晶(大概算水晶吧......)组成,每个水晶由两个底面重合的四棱锥构成,采用默认的面填充方式,着色模式分别为平面着色和平滑着色。
分类:
其他好文 时间:
2014-08-22 20:57:59
阅读次数:
204
1.不透明度
当我们要将两个半透的纹理贴图到一个材质球上的时候就遇到混合的问题,由于前面的知识我们已经知道了片段着色器以及后面的环节的主要工作是输出颜色与深度到帧缓存中,所以两个纹理在每个像素上的颜色到底以怎样的形式混合在一起最后输出到帧缓存中是我们现在首要讨论的内容。
1.混合(blending)
上一篇文章中的管道环节中的“逐帧操作”环节中的一项操作就是混合操作,可见混合操作是不可编程的固定功能环节。
在混合操作中,我们将片段着色器中计算出来的颜色称之为 “源颜色”,帧缓存中对应的像素已经存在...
分类:
其他好文 时间:
2014-08-22 19:44:29
阅读次数:
206
经过前面的系列文章中的三个例子,尽管代码简单,但是我想应该还有些地方没有100%弄明白,我们现在得回过头来补充一些必备的数学、图形学知识
1、图形管道
第一个例子中我有提到顶点着色和片段着色在整个图形绘制过程中属于一个环节,整个过程叫做管道,这个管道的所有环节包括:
在整个管道中,只有顶点着色与片段着色是可编程的,顶点数据和帧缓存是具体的数据,剩下的环节是固定功能的环节,即不能用cg去编程的环节。
[图片]
2、数据流
[图片]...
分类:
其他好文 时间:
2014-08-22 17:54:19
阅读次数:
258
在上一个例子中,我们得到了由mesh组件传递的信息经过数学转换至合适的颜色区间以颜色的形式着色到物体上。这篇文章将要在此基础上研究片段的擦除(discarding fragments)和前面剪裁、后面剪裁(front face culling and back face culling)来达到透明效果。
当一个mesh组件的信息被传递后,我们可以通过代码决定哪些部分渲染(render)出来,而哪些部分不要,这个过程就像把那些不要的部分剔除了,我们看不到他,虽然他的mesh信息还在,但是我们的GPU不会去处理...
分类:
其他好文 时间:
2014-08-19 19:03:25
阅读次数:
304
上一篇文章的例子中我们可以看到顶点着色器的输出参数可以说是直接作为了片段着色器的形参传递过来,那么不由得一个问题浮现出来,顶点着色器的形参是从何处传递过来的?
顶点着色器的形参是gameObject 的meshRenderer组件将所有的mesh数据按每一帧一次传递给OpenGL。
这中间的过程常常被称作一次draw call,往往一次性传输大量mesh信息作为一次draw call 比多次传输少量mesh信息引起多次draw call更加效率。
而在上一个例子中我们只接受了MeshRenderer传递...
分类:
其他好文 时间:
2014-08-19 16:31:04
阅读次数:
212
使用Visual Studio SDK实现GLSL语法着色插件。实现了关键字,类型,限定符,系统变量,系统函数的词法着色。
分类:
其他好文 时间:
2014-08-18 21:43:33
阅读次数:
441
前提知识点:
1.CG代码必须用
CGPROGRAM
。。。
ENDCG括起来
2.顶点着色器与片段着色器的主函数名称可随意,但需要再#pragma vert 与#pragma fragment中声明并且与主函数名完全匹配,shader才会找到入口
3.float4是一种压缩数组,float4 vert与float vert[4]严格意义上讲不同,虽然都是存放4个float,但float4作为向量类型做点乘、内积等处理更快速
4.语义 :变量除了变量名与数据类型之外,还在:后声明其语义
例子一:RGB立方体...
分类:
其他好文 时间:
2014-08-18 20:32:52
阅读次数:
231
#include void function(char *str) { char buffer[16]; strcpy(buffer,str);
} int main() { char large_string[256]; int i; for( i = 0; i void function(cha...
分类:
其他好文 时间:
2014-08-16 22:28:11
阅读次数:
170
SyntaxHighlighter是Google Code上的一个开源项目,主要用于给网页上的代码着色,使用十分方便,效果也不错,而且几乎支持常见的所有语言。使用步骤:二、引入文件将解压后的scripts和styles文件夹复制到项目中,在页面中引入shCore.js和核心CSS文件shCore.c...
分类:
其他好文 时间:
2014-08-16 03:19:59
阅读次数:
221