随笔分类 - graphics
摘要:这篇文章被拖延得这么久是因为我没有找到合适的引言-- XXX这一篇接着讲Gamma。近几年基于物理的渲染(Physically Based Shading, 后文简称PBS)开始在游戏业界受到关注并迅速流行。10年、12年以及今年的siggraph都专门开了一个course来介绍基于物理的渲染的基本理论和工程实践,这在很大程度上推动了PBS的普及。如果你对PBS还不太了解的话,不妨先看一看龚大写的系列文章。在从传统渲染管线切换到PBS管线的过程中,一个非常基础而又重要的概念叫做伽马正确(Gamma Correct),为了保证伽马正确需要做的一个操作叫做伽马校正(Gamma Correction
阅读全文
摘要:What we think of as conventional alpha-blending is basically wrong.--Tom Forsyth前段时间在Amazon上淘的三本二手书——一本Jim Blinn's Corner系列的Dirty Pixels, 另二本是Andrew Glassner's Notebook——几经周折终于是送到了,当然立刻马上是迫不及待地大致翻了一遍。相比于Andrew Glassner的天马行空笔下千秋(从几何讲到折纸和形状合成,从对称讲到织纹和拼接,甚至还有一大坨似乎是在讲量子计算),我还是更喜欢Jim Blinn的风格,简单实
阅读全文
摘要:一开始是雄性勃勃的想要写一个4k,后来写着写着悲剧的发现4k已然已经不可能了,shader还没有打进去就已经4.1k,再加上压缩后的shader总大小应该会在5k以上。要硬生生的抠出1k以上的空间,这绝对不是人干的事。所以我决定破罐子破摔,干脆把空间放松到8k好了,这样不仅仅可以把shader放进去,甚至还可以考虑直接存编译后的shader,省得每次启动都要花7~8秒的时间编译。于是把编译后的shader打进去,用crinkler一压缩,尼玛又超了,8.2k. 0.2k还比较好搞,优化了几个地方的写法,顺便猥琐的把析构函数注释掉…….然后,8,179字节,搞定。其中base大概占到1k左右,钢
阅读全文
摘要:话说我最近终于一咬牙,花了一个月工资,买了块史上最强网卡:GTX670。此卡在手,心痒难忍,必须要写个demo来测一下网速,考虑了半天,决定来实现一下基于Curl Noise的流体模拟.这种流体模拟并不是基于物理的,其基本思想就是生成一个随机的速度场来控制粒子的运动。但是为了保证视觉上可信,还是需要满足不可压缩流的基本条件:这个随机的速度场需要是无源场(divergence-free),即散度处处为0。那么现在的问题是,怎么生成一个散度处处为0的速度场呢?注意到有这样一个微分恒等式:div(curl(Φ)) = 0,也即是说,旋度场的散度为0。该恒等式的满足需要Φ有连续的二阶混合偏导。于是我们
阅读全文
摘要:Shader live coding是个很好玩的东西,因为只要你足够的创造力,仅用一个pixel shader几乎可以实现任意复杂的效果。正如iq所说:给我两个三角形,我就能画出整个世界。网上能够找到许多glsl的live coding tool. 但却一直没有找到hlsl的。这段时间稍微不那么忙了,于是自己写了一个hlsl版的,有兴趣的可以下载下来玩一玩。源代码在这里。最后贴一个视频,因为使用的fraps未注册,所以只能录30秒。视频中的效果是一个Sierpinski四面体,完整的ps代码可以在源码的save目录里找到。PlayPauseStop
阅读全文
摘要:Filmic Tonemapping固然是个好东西,然而Jim Hejl & Burgess-Dawson的原始公式在不少显示器上都显得过于鲜艳了,另外还有不少人甚至认为完全没有任何Tonemapping的画面更对他们的口味。众口难调,我们能做的就是提供一个可配置的Tonemapping,让他们自己撸去吧。Uncharted2中的Tonemapping是可配置的,而且参数还异常丰富灵活,有A, 有B, 有C, 还有D, E, F….,具体的公式我也懒得说了,大家都知道的,不知道的自己去翻ppt。你说有这么多的参数的公式好调么?-- 我反正是搞不定了。我需要的是一个简单粗暴的公式,只能有
阅读全文
摘要:Stencil-Based Multiresolution Splatting的详细流程,英文很水,看的朋友请开启自动纠错。哈哈,这种风格其实是在模仿我的偶像之一:Erik Demaine.PDF下载: http://files.cnblogs.com/atyuwen/notes.pdf
阅读全文
摘要:立体涂鸦(3D Street Painting, 3D Chalk Art, 3D Graffiti...)是一种很有意思的东西。前些年在网上经常能看到国外玩家的作品,比如这里;最近也有些国内的作品出现,比如这里。这玩意的原理其实很简单,比如前几天就有牛人写了一篇教程。我以前也尝试弄过,不过我对3d max不是很熟,也没有数码相机,没有他搞得那么专业,就是先渲染一张图,然后用light的projector map打在一个平面上,看起来效果也还不错。当然,如果不借助于3d max这样的软件,自己写个程序直接渲染出立体涂鸦的草图也并不是件难事。比如有一个模型o,放在一张纸p上,摄像机的位置为c,那
阅读全文
摘要:今天看到BenoitMandelbrot(分形理论创始人)于本月14日逝世,享年85岁。回想在两年前的纪录片《寻找隐秘的维度》中,Mandelbrot 还显得那么的年轻,一点也不像一个已逾八旬的老人,如今却已与世长辞,永远地消逝在另一个维度里。我一直对分形比较关注,也渲染过一些2D/3D的分形,下面帖出一些相关的资源,有兴趣的可以看看,了解一下 Mandelbrot 那醉人心弦的分形世界。纪录片:...
阅读全文
摘要:Screen Space Soft Shadows (SSSS) 是 GPU Pro 中的一篇文章,我感兴趣已经很久了。可是 GPU Pro 太贵,而 ShaderX 系列的书国内向来也都没有引进,因此像我这样的穷人,自然是买不起了。所幸后来 AK Peters 放出了 GPU Pro 随书光盘的下载,正好在其中有关于 Screen Space Soft Shadows 的一份简要文档,这才得以一...
阅读全文
摘要:我经常在想,如果在标准的论文格式中,除了Abstract 和 Conclusion 以外,还必须加上一节 Key Idea,那该多好啊。事实上,对于我看过的大多数论文(虽然不算太多),都完全能够用一两段文字将其最基本的思想讲述清楚,余下所不能概括的通常也只是数学推导、实现细节和结果分析而已。或许这个概括应该包含在 Abstract 里,可惜大多数论文的摘要都太短而且千篇一律,只是提供了一些基本的信...
阅读全文
摘要:1. Screen Space Directional OcclusionScreen Space Directional Occlusion (SSDO) 是对 Screen Space Ambient Occlusion (SSAO) 的一个改良,其中心思想非常简单,即在对每个 fragment 做半球采样的时候同时累积各个采样方向的 irradiance。假设在半球采样空间中,取均匀分布的N个采样点,每个采样点所占有的 solid angle 为 2PI / N,那么对于任意采样点 s_i ,其贡献的 irradiance 为:其中L是来自s_i 所在方向的 radiance;V 是vi
阅读全文
摘要:这是去年 Ubisoft 的一道招聘试题:目标 创建一个程序,读取我们提供的两个高度位图文件(Heightmap01.bmp,heightmap02.bmp)为基础渲染出地形效果,并能顺利地在以各个高度位图为基础的地形之间进行平滑变换(Morphing),保证变换过程中光照效果的正确。 详情 在程序中,读取我们提供的两个位图图像(192x192)。使用Direct3D的功能渲染地形效果,使三维场景...
阅读全文
摘要:一. 四维空间初探1.引子1.1 一个正凸多胞体的演示程序:Tesseract点这里下载(88k).点击右键进行预览和设置,如果喜欢,可以拷至Windows/system32目录下进行安装:)。在设置中可以选择是否播放背景音乐和多边形细分质量。如果阁下的电脑比曹丞相还过时的话,可以考虑将Polygon Quality设为Low以提高画面流畅度。 这是一个屏幕保护程序,演示了四维空间中的6个正凸多胞...
阅读全文
摘要:一. 什么是MOD音乐MIDI总该知道吧,不知道的话这里再简单介绍一下:所谓MIDI,即 Musical Instrument Digital Interface,音乐设备数字接口,其实就是一种通信标准,来作为音乐设备之间、音乐设备与PC之间传输MIDI信号的约定规范。逐渐地,MIDI也就成了电脑音乐的代名词,现在我们所说的“MIDI音乐”,通常也就是指使用电脑和数字音乐设...
阅读全文
摘要:一.序言第一次看见64K动画时,觉得很神奇。这种动画往往包含了一些复杂的几何造型和绚丽的纹理,然后还有着节奏强劲的背景音乐。这一大堆东西无论如何也不像是一个仅仅64K的执行文件所能容下的,按照普通的理解,单是长达几分钟甚至几十分钟的背景音乐文件也需要以M为单位的存储空间,更别说那么多的模型和纹理图像了。后来当我花了很长一段时间学习MIDI音乐制作和3D图形学后,64K 动画也就不显得那么神奇了--...
阅读全文
浙公网安备 33010602011771号