Shaders
skyman_2001
这个作者很懒,什么都没留下…
展开
-
Fresnel效果和颜色色散(Using OpenGL & Cg)
1.Fresnel效果一般来说,当光到达2种材质的接触面时,一些光在接触面的表面被反射出去,而另一部分光将发生折射穿过接触面,这个现象称为Fresnel效果。Fresnel公式描述了多少光被反射和多少光被折射。下面是Fresnel公式的一个近似:reflectionCoefficient=max(0,min(1,bias+scale×(1+I·N)power))反射系数reflectionCoef原创 2005-09-11 18:08:00 · 5519 阅读 · 0 评论 -
HLSL中如何把输入映射到输出像素
当使用PS来进行2D图像处理的时候,实际上仍然在做3D成像。我们渲染多边形直接和屏幕对齐,然后覆盖在屏幕上。我们直接把2D Pixel Shader应用到这个表面上。 最常用的方法是用一个简单的与屏幕对齐的矩形(两个三角形)来覆盖屏幕。如果定义了一个3D单位大小的正方形,所有的点在x和y轴范围从-n到n(n一般取0.5或1.0),而z坐标为0。然后用下面的代码将它与屏幕对齐。注意原创 2006-12-17 16:30:00 · 2106 阅读 · 0 评论 -
Toon Shading Using GLSL
卡通渲染是一种非真实感渲染(non-photorealistic render)。而卡通着色是一种简单非真实着色。它运用很少的颜色通常是颜色调和,所以经常是从一种色调变化到另一种色调。但是给人一种三维模型的感觉。 上面茶壶出现的色调是基于角度的挑选的。实际上是光照方向与法线方向的cosine值所以,当法线离光照方向很近的情况下,将会出现亮的色调。当光照方向与法线方向的夹原创 2006-10-08 20:35:00 · 2832 阅读 · 1 评论 -
GLSL基础教程(一)
高级着色语言(HLSL――High Level Shading Language)是用来在顶点和像素着色器(shader)中编程的语言。其实,说白了他们就是我们写的短小的自定义程序,他们是在图形卡的GPU(Graphic Processor Unit图形处理单元)上执行的,代替了固定的渲染管线的一部分。比如:视图转换、投影转换等。由于我们可以将HLSL着色器所写的代码直接作为长原创 2006-09-25 19:29:00 · 5016 阅读 · 1 评论 -
卡通渲染进展(一)
现在可以加载X模型渲染,颜色随材质的不同而不同,下面是截图,模型用的是DX SDK中的car.x模型,而且改进了一下算法,速度有了明显的提升。 下一步打算是实现动态点光源效果,还有阴影效果,当然很有动画,争取做一个小的卡通渲染引擎,呵呵!原创 2006-09-19 23:03:00 · 3034 阅读 · 5 评论 -
卡通渲染(Toon Shading/Cel Shading)
卡通渲染(Catoon Rendering/Toon Shading/Cel Shading)是NPR技术中的一种。 下面是老外关于卡通渲染的定义: Cel shading is a flat looking 3D image, with a cartoonish look exemplified by animated movies.The basic elements of原创 2006-09-10 17:13:00 · 7950 阅读 · 6 评论 -
用Cg对任意形状的物体进行凹凸贴图(含源码)
像3D中的人物和物体模型一般不是很规则的,一般由三角形网格组成。知道每个三角形三顶点的位置和纹理坐标,就可以计算出该三角形的TBN矩阵,然后将光向量转换到该三角形的切空间中,再计算diffuse和specular。用传统的API来实现Bumpmap有个缺点,就是要实现高specular比较困难,所以表面会较暗,没有光泽。而用shader就可以实现高specular,可以把specular指数提高数原创 2005-09-26 12:25:00 · 3062 阅读 · 0 评论 -
Cg中的一个Bug
Cg中有一个Bug,就是当你用运行库函数cgGLSetStateMatrixParameter来传送MODELVIEW矩阵时,所绘制的物体就会变大,而且会从原点发生位置偏移。我现在用的是Cg 1.4,这个Bug还存在。所以建议使用arbvp1 Profile,通过它的“glstate”结构来访问MODELVIEW矩阵(如glstate.matrix.mvp)。在Cg程序中把position = m原创 2005-09-24 23:50:00 · 2599 阅读 · 0 评论 -
飘动的丝缎(OGL+Cg)
有些物体的表面(像绸缎、压缩光盘、擦过的金属和头发等)呈现出各向异性(anisotropic)的光照属性。传统的光照模型认为3D表面是局部平的,表面上一点的法线垂直于该平面,认为表面切向量是均匀分布的(也就是各向同性分布);而机织丝布有其固有的线的走向,类似的还有擦过的金属表面、头发、CD光盘表面上的槽纹等。沿着表面擦痕或纤维的表面法线的分布与横穿它们的分布不同。相对远点的观察者会看到光照结果,但原创 2005-09-23 20:36:00 · 3030 阅读 · 0 评论 -
Two Methods of Multitexture In Cg
Method 1: Using OpenGLs native multi-texture support (using semantics)// In C++ File: // Identify the textures to use for the pixel shader... cgGLSetTextureParameter( g_CGparam_testTexture, g_te原创 2005-09-22 16:19:00 · 2525 阅读 · 0 评论 -
水晶茶壶
逐像素的Fresnel效果和颜色色散,Dev C++ +OpenGL+Cgdocument.title="逐像素的Fresnel效果和颜色色散(Using OpenGL & Cg) - "+document.title原创 2005-09-14 20:15:00 · 2304 阅读 · 0 评论 -
逐像素的Fresnel效果和颜色色散(Using OpenGL & Cg)
上次的Fresnel效果和颜色色散程序是逐顶点的,效果不是很好。经网友azureyes的提示,我用Cg程序进行逐像素的计算,效果好多了。下面是截图:下面这张是逐顶点的,可以比较一下:可以看出,逐像素比逐顶点效果要好得多,但帧率下降很严重。这是因为场景的片断数目要比顶点数目多得多,计算要耗时得多,所以有时要做适当的平衡。原创 2005-09-12 19:39:00 · 2415 阅读 · 0 评论 -
Refraction Using Cg In OpenGL
折射环境映射的物理原理:从物理光学中我们知道,当光通过密度不同的两种材质之间的介面时,光的方向会发生改变。在方向上的改变是因为光在较浓的材质中传播比较慢。例如,光在空气中传播得比较快,但在水中要慢很多。斯涅耳定律描述了光通过2种媒体之间的分界面发生了什么。公式如下:η1sinθ1=η2sinθ2一个媒体的折射系数η度量了媒体是如何影响光速的。一个媒体的折射系数越大,光在其中的传播速度越慢。在实际世原创 2005-09-11 13:15:00 · 2532 阅读 · 0 评论 -
Reflection Using Cg in OpenGL
这是《Cg Tutorial》第七章中的例子,具体原理和Cg代码见书。这个程序使用Cg来实现Cubemap环境映射,可以控制反射率来改变反射程度。Cubemap纹理使用的是azure同志程序里的图片,在此表示感谢:-)截图:1.反射率reflectivity=0.5:2.反射率reflectivity=1.0:程序下载:cg_reflection.part01.rarcg_reflection.p原创 2005-09-10 23:07:00 · 1864 阅读 · 0 评论 -
Halftoning Comic Style Using Cg
Halftone(半调法)是非真实感渲染(NPR)的一种,它用来模拟铅笔和墨水绘画的风格(pen-and-ink)。它最早来源于印制白纸黑字的书报,所有的连续色调图像,无论是彩色的,还是灰度的,由于只能用黑白两种颜色表示,所以必须采用总体亮度分布大致相同的方式。半调法中决定可视效果最基本的因素是halftone screen,这是一个包含阈值的灰度纹理。要从给定输入图像创建经半调处理过的图像,原创 2005-09-23 11:16:00 · 2551 阅读 · 0 评论 -
用Cg实现卡通着色
卡通着色(toon shading)是非真实渲染(NPR)的一种,它用不变的颜色和明显的轮廓来对物体进行着色。截图:原创 2005-09-20 10:44:00 · 2362 阅读 · 0 评论 -
用GPU实现Cellular Texture
转载请注明:来自http://blog.csdn.net/skyman_2001一、介绍Steven Worley在Siggraph96上发表的论文《A Cellular Texture Basis Function》提出了一种用于实现cellular texture的基函数。它们是基于分散“特征点(feature point)”到R3空间,并建立基于局部点的分布的一个标量函数。这个函原创 2007-03-23 23:54:00 · 4382 阅读 · 2 评论