随笔-341  评论-2670  文章-0  trackbacks-0
01 2009 档案
使用GI获得柔和阴影      摘要: 所谓的GI可以简单的理解为渲染一个像素的时候,就在那个像素的法向量位置渲染一个半球,统计并作为光源输入。现在使用一个比较粗糙的平行光在天空盒上的投影函数:f(t)=cos(t)*4/(1-cos(a)),其中a是光斑夹角的一半。GI花了好长时间,图如下:

  阅读全文
posted @ 2009-01-30 06:54 陈梓瀚(vczh) 阅读(2601) | 评论 (0)  编辑
修正了Fresnel,正确绘制高亮和凸多面体      摘要: 之前搞错了一个fresnel公式,实际上全透明物体的fresnel公式应当如下:

f=入射角
t=出射角,有sint=sinf/n
新的factor=(sin2(f-t)/sin2(f+t)+tan2(f-t)/tan2(f+t))/2,这样的话出现全反射的时候,factor=1。  阅读全文
posted @ 2009-01-28 00:27 陈梓瀚(vczh) 阅读(2255) | 评论 (0)  编辑
重新使用Fresnel为材质建模并增加锥形      摘要: 由于之前的建模方法乱七八糟,现在使用一般的Fresnel方法为材质建模。这是一个处理折射和反射光比率的函数。计算方法如下:factor=bias+scale(1+I×N)^power,将factor剪裁之[0,1]范围内之后,折射光/反射光比率为factor/(1-factor)。bias、scale与power是材质参数,需直接指定。  阅读全文
posted @ 2009-01-24 09:55 陈梓瀚(vczh) 阅读(1842) | 评论 (0)  编辑
实现透明物体折射      摘要: 明天得开始研究别人是怎么处理材质的了。目前使用的方法是(反射来源×反射基准)×折射比率+(光源×材质颜色)×(1-折射比率)+[(折射来源+底面反射)×衰减+(1-衰减)]×透明物体内部颜色减。等材质完全做完之后,目前的渲染算法就可以为GI服务了。最后是计算混合的代码:  阅读全文
posted @ 2009-01-22 06:02 陈梓瀚(vczh) 阅读(2260) | 评论 (2)  编辑
孔子曰:三日不编程,食肉无味      摘要: 由于一时找不到题目写,所以这两天就搞了一个简单的基于光线追踪的软件渲染器。准备花点时间做下去了。从昨天开始到现在实现的东西有反射、阴影、多光源、线性变换等。
  阅读全文
posted @ 2009-01-19 00:48 陈梓瀚(vczh) 阅读(4149) | 评论 (5)  编辑
实现了Huffman压缩解压算法      摘要: 今天终于在流系统里面添加了Huffman的压缩解压算法,现在只需要将一个LZ77流加到Huffman流上面,就能同时使用两种压缩算法进行压缩了。我的Huffman算法使用了Canonical Huffman编码方法进行Huffman树的生成。  阅读全文
posted @ 2009-01-10 09:16 陈梓瀚(vczh) 阅读(3558) | 评论 (0)  编辑
修改后的LZ77压缩解压源码      摘要: 这份代码跟上一次相比,修正了以下部分:

1、可修改的Window Size。压缩流会把Window Size写进去,解压流能够自动获取。
2、发现冗余的地方,每一个标记的压缩块节省了一位。
3、如果用户一次性写入的字节不够多则会缓存起来,上一版本则是直接压缩完。这样会丢失某些原本可以压缩的数据,因此修正。  阅读全文
posted @ 2009-01-06 23:35 陈梓瀚(vczh) 阅读(3103) | 评论 (6)  编辑
LZ77压缩效果测试      摘要: 今天将我的VL_LZ77Stream修改成了可以设置窗口大小的压缩流。我用了一些文件进行压缩和对比。  阅读全文
posted @ 2009-01-06 08:36 陈梓瀚(vczh) 阅读(2331) | 评论 (1)  编辑
实现了一个128长度窗口大小的LZ77压缩解压算法      摘要: 这个压缩流是Vczh Library++ 2.0庞大的流与控制器系统的其中一个部分。我准备将其改造成可调大小的,并且打算添加LZW与Huffman压缩解压算法。以下是用C++实现的代码。  阅读全文
posted @ 2009-01-05 09:47 陈梓瀚(vczh) 阅读(2813) | 评论 (5)  编辑