随笔分类 - 开发随笔
摘要:per-pixel lighting + light mapping + shadow mapping 构成光照系统。 需要硬件支持如下扩展: GL_ARB_multitexture, GL_ARB_shader_objects, GL_ARB_vertex_shader, GL_ARB_vertex_program, GL_ARB_fragment_shader, GL_A...
阅读全文
摘要:解决了project texture后,shadow mapping就比较容易了。 对于基于ogl的shadow mapping,基本上有如下几种做法: 1 采用GL_ARB_depth_texture, GL_ARB_shadow扩展。Pass1中以光源为视点渲染场景到帧缓存,然后将深度部分copy到depth texture;Pass2中以眼睛为视点,将depth texture投影到...
阅读全文
摘要:原文见:http://www.cnblogs.com/Pointer/archive/2004/12/20/79323.html 最近通过学习固定渲染管线的光栅化过程,终于明白了扭曲的原因。 我们先设V=投影变换前的顶点,V'=投影变换后的齐次顶点。 在屏幕空间中,V的各项属性并不是线性分布的,但1/Vz是线性分布的,对于其它的顶点属性Vb/Vz也是线性分布的(《Mathematics...
阅读全文
摘要:搁置了很久的一个Demo。为了庆祝博客园计算机图形学团队的成立、纪念2004年的最后一天就把它翻出来吧。 把下面三个包解压到同一个文件夹内运行。 http://downloads.cnblogs.com/CGTeam/Member/Pointer/dlls.rar http://downloads.cnblogs.com/CGTeam/Member/Pointer/model.rar...
阅读全文
摘要:多谢tomb4的指点,发现原来AutoTexCoordGen中最根本的一点被我理解错了。 Object Linear模式并不是在Object Space中以默认投影点做Projective,Eye Linear模式也并非是在Eye Space中以默认投影点做Projective,这是最关键的一点。基于这一点的理解错误,对于Eye Linear模式的TexGen和Object Linear模式的...
阅读全文
摘要:根据RedBook的解释,在自动纹理坐标生成中,GL_OBJECT_LINEAR模式不需要使用模型视图矩阵,GL_EYE_LINEAR模式需要使用模型视图矩阵。那么我们可以做一系列试验验证上述结论: 1 使用GL_EYE_LINEAR模式生成纹理坐标。设置模型视图矩阵与投影矩阵,让OGL用固定渲染管线进行坐标变换。 试验结果:程序结果正常,纹理坐标同眼坐标相关,随眼坐标的变化而变化。 2 使用...
阅读全文
摘要:多谢CSDN上happy__888([顾问团]寻开心)的热心指点,明白了法向量的矩阵变换方式和顶点的矩阵变换方式是不同的。以前确实是没有注意过这个问题。 心蓝兄有一篇文章介绍了这一点:http://xreal.51.net/Game/NormalMatrix.htm 推导过程见上文,最后的结论是: 假设矩阵M为顶点Vo的模型视图变换矩阵,No为顶点Vo的法线。Ve为进行过模型视图变换后的眼...
阅读全文
摘要:RedBook里关于使用GL_EYE_LINEAR模式自动生成纹理坐标的原理也看不明白了。 是眼坐标系中的顶点坐标,也就是经过了模型视图变换后的顶点坐标吧。 M-1是模型视图矩阵的逆矩阵。 generated coordinate = p1' xe + p2' ye + p3' ze + p4' we where (p1' p2' p3' p4') = (p1 p2 p3 p4)M-1...
阅读全文
摘要:仔细查阅了一下RedBook上关于自动纹理坐标生成的说明: The GL_OBJECT_LINEAR function calculates the texture coordinates in the model's coordinate system. In Example 9-3 , where the contour lines are perpendicular to the...
阅读全文
摘要:一道是在CSDN上看到的,一道是在博客堂上看到的。 第一题 现有1000个苹果,10个盒子,问各个盒子内应该分别放入多少个苹果,才能使得用户要买任意1至1000之间的一个苹果数,都可以给他(卖的时候是整个盒子卖,不能拆盒子的包装)。 第二题 一个监狱长把所有囚徒招来,对他们说, 1. 这次会议结束之后,你们将被隔离,互相之间再也不能交流任何信息,除了2。 2. 你们唯一可以交流信息的是我桌子上...
阅读全文
摘要:对于MD5模型的渲染方式,hourousha兄提出了另一种猜测: 先利用现有的NormalMap做PolyBump,然后再次从结果中获取TangentSpace,结合HeightMap生成的NormalMap最终做DetailBump. 顺便上一张实际游戏中的fatty.
阅读全文
摘要:多谢华山兄和Secondage兄的解释,终于明白了DOOM3中HeightMap的真正用处。原来HeightMap并不是用作ParallaxMapping的(实际上HeightMap中保存的也并非真正的高度信息),而是用于生成NormalMap的。DOOM3中的BumpMap一共有两种,一种是PolyBump,它是由_local纹理得到的,保存的是模型粗略的凸凹信息;另一种是DetailBump,...
阅读全文
摘要:瞎扯一句,这个胖子非常非常像我以前的一位房东。 =____=b
阅读全文
摘要:Bump Mapping做好了,Parallax Mapping就很容易了。不过效果并不是很明显。顺道加大了Specular Coeff。
阅读全文
摘要:使用《mathematics for 3d game programming & computer graphics》中介绍的方法计算tangent basis.需要注意的一点是,在计算tangent basis的时候,最好是采用顶点的法线而非三角形的,否则将会产生非常严重的不平滑过渡。没有开启Bump Mapping.开启Bump Mapping.
阅读全文
摘要:加入纹理。在sevecol兄的指点下,终于领悟到:Toon Shading实际上是一种明显的光照非平滑过渡效果,而非颜色非平滑过渡。
阅读全文
摘要:第二个重要的步骤:勾边。《Introduction to 3D Game Programming with DirectX 9.0》中介绍了一种方法,其原理如下:1 对于一条边构造一个退化四边形2 对于该边相邻的两个三角面,如果从视点方向看到这两个三角面一个是正面一个是背面;或者该边只与一个三角面相邻,则该边为轮廓线,否则不是。3 对于轮廓线,向法线方向平移退化四边形中的两个顶点,使其不再退化,达...
阅读全文
摘要:用上了SpecularMap,看起来好一些了。下一步是加入NormalMap和HeightMap。
阅读全文
摘要:学以致用。:)不过略有不同的是我没有采用根据光线强度设置纹理坐标的方式,而是根据光线强度直接确定的当前象素的颜色值。SHADER代码如下:VertexShader //-----------------------------------------------------------------------------// vertex shader//--------------------...
阅读全文

浙公网安备 33010602011771号