大家好~这三个月以来,我一直在学习和实现"基于WebGPU的混合光线追踪实时渲染"的技术,使用了Ray Tracing管线(如.rgen..rmiss等着色器). 现在与大家分享和介绍我目前的学习成果,希望对大家有所帮助!谢谢! 通过国外的开源项目,可在WebGPU中使用Ray Tracing管线 这三个月我对Ray Tracing的研究有了质的突破,主要归功于我发现的WebGPU Node开源项目! 该作者首先在dawn-ray-tracing开源项目中对"dawn项目:C…
<Ray Tracing in One Weekend> 优点: 相对简单易懂 渲染效果相当好 代码简短,只看书上的代码就可以写出完整的程序,而且Github上的代码是将基类与之类写在一起的,方便阅读 缺点: 看完书你依然不知道,渲染效果好是因为用了路径追踪 书中部分代码是有问题的 并没有使用标准库容器,没有一定c++基础看不了 点评 定位是光线追踪小学级别的入门书籍,可以让你大致了解光追的原理,一窥离线渲染的些许门道,而不至于遭受巨大打击. <Ray Tracing from the…
上一篇比较简单,很久才发是因为做了一些好玩的场景,后来发现这一章是专门写场景例子的,所以就安排到了这一篇 Preface 这一篇要介绍的内容有: 1. 自己做的光照例子 2. Cornell box画质问题及优化方案 3. 新的场景几何体——长方体 轴平行长方体 任意长方体 我们这一篇重实践轻理论阐述 ready 1. 需要上一章的知识 但是,上一章的Cornell box画质优化仅限于盒子本身,如果作为场景和其他物体放在一起就不能那么优化画质 即,Cornell box像素计算失败应该返回黑色…
 Preface 注:鉴于很多网站随意爬取数据,可能导致内容残缺以及引用失效等问题,影响阅读,请认准原创网址: https://www.cnblogs.com/lv-anchoret/category/1368696.html 我们这节主要讲把之前的概率密度做混合,以得到更好的效果 我们上一篇以前经常用关于cos函数的pdf,上一节用的是与光源采样相关的pdf,那么,我们把两者结合到一起,协调它们之间的比例,我们就可以得到一个有着两种概率密度模型的pdf,这往往是更贴近生活的,那么我们今天就来学…
 Preface 往后看了几章,对这本书有了新的理解 上一篇,我们第一次尝试把MC积分运用到了Lambertian材质中,当然,第一次尝试是失败的,作者发现它的渲染效果和现实有些出入,所以结尾处声明要通过实践,改进当前的效果 于是乎,就有了后面的章节,几乎整本书都在讲,如何一步一步地改进上一篇的画质,使其更加符合现实,上一篇其实是抛砖引玉 这本书的小标题名为the rest of your life 通过前面几章,我们可以更好地理解这句话:我们通过MC积分优化效果,采用的是pdf函数,之前说过,…
我们来整理一下项目的代码 目录 ----include --hit --texture --material ----RTdef.hpp ----ray.hpp ----camera.hpp ----main.cpp 3D泛型数学库中的randomfunc.hpp增加了新内容 #pragma once #include <lvgm\type_vec\type_vec.h> #include <random> namespace lvgm { //@brief: create a r…
 Preface 今天有两个东东,一个是体积烟雾,一个是封面图 下一篇我们总结项目代码 Chapter 8:Volumes 我们需要为我们的光线追踪器添加新的物体——烟.雾,也称为participating media. 我们还需要补充一个材质——次表面散射材质,它有点像物体内的浓雾. 体渲染通常的做法是,在体的内部有很多随机表面,来实现散射的效果.比如一束烟可以表示为,在这束烟的内部任意位置,都可以存在一个面,以此来实现烟.雾 对于一个恒定密度体,一条光线通过其中的时候,在烟雾体中传播的时候也…
Chapter 5:Image Texture Mapping 先看效果: 我们之前的纹理是利用的是撞击点p处的位置信息,比如大理石纹理 而我们今天的图片映射纹理采用2D(u,v)纹理坐标来进行. 在图像中使用缩放(u,v)的直接方法是将u和v四舍五入为整数,并将其作用于(i,j)像素.而,我们的纹理和物体的尺寸并不一致,所以我们需要将其规格化,然后再放大适应至物体尺寸.即,我们采用某个点在当前图像中的比例,而不是具体的位置,例如,对于nx乘ny图像中的像素(i,j),图像纹理位置为: u =…
我们上一篇写了Chapter5 的第一个部分表面法线,那么我们来学剩下的部分,以及Chapter6. Chapter5:Surface normals and multiple objects. 我们这一节主要向场景中添加对象. 依据代码重用原则,此时应该抽象出对象创.绘制的公共部分 All what we do are followed by object-oriented !  我们先来抽象并定义一些基本的类型 1>.ray. 这个不用说了,但是我们发现,在后面涉及到的所有的向量和精度类型均…
 Preface 为了得到更好的纹理,很多人采用各种形式的柏林噪声(该命名来自于发明人 Ken Perlin) 柏林噪声是一种比较模糊的白噪声的东西:(引用书中一张图) 柏林噪声是用来生成一些看似杂乱无章其实有些变换规律的图形(更加贴近自然),比如海水.地形.雾等 当然这里面的原理涉及分形几何等相关的知识 例如,2D柏林噪声可以生成 以及一些网上的总结: 还有一些其他的图 是不是看起来自然多了 那么今天,我们就来领略一下随机技术带来的自然之美~  Chapter 4:Perlin Noise 柏…