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) 编辑