愚头的博客

一位图形学爱好者的唠叨

  • 个人笔记 - 2020.11.08

    SYCL 这是一个针对高性能计算的抽象层,基于标准的C++语言,规范了并行计算的C++接口,在编译阶段针对不同设备进行并行加速。 例如,对于CPU使用OpenMP进行加速,对NVIDIA的GPU利用CUDA或OpenCL+SPIR进行加速,对AMD的GPU则利用ROCm或OpenCL+SPIR进行加速。 这样最明显的好处是同一套代码,可以充分利用不同的设备来实现高性能计算。 对于最近几年大热的机器学习和光线追踪来讲,完全可以利用这个技术写一套代码来实现跨设备和平台😄(是真的吗?)。 实现 介绍 oneAPI DPC++ 由Intel实现的SYCL,基于LLVM并且是开源的。如果不愿意自己编译可以注册申请Intel的DevCloud直接使用(这年头大厂没有个开发云都不能算大厂啊😏)。 ComputeCPP 这是一个实现最完善的SYCL,由Codeplay Software Ltd.开发,并且已经商用。 triSYCL 开源项目,由Xilinx开发,就是最近被AMD收购的那家公司。 hipSYCL 开源项目,由德国Heidelberg大学的HPC技术专家Alpay Aksel主导开发。 相关文章和项目 SYCL官方资源 SYCL技术站(Codeplay Software Ltd.开发) SYCL & Eigen Starter Project Ray-tracing in a Weekend with SYCL: Basic sphere tracing A portable GPU path Tracer library running powered by SYCL.

    阅读更多、、、

  • 渲染器开发日志(四) 射灯

    射灯 该类型的灯是在点光基础增加了光的散射方向和范围。 相关参数 颜色 - 光源颜色 强度 - 光源亮度 位置 - 光源位置 长度 - 光源的影响范围 半径 - 与点光半径相同 方向 - 射灯的朝向 内角和外角 对于内角范围内的物体,光源强度不会衰减 对于内角到外角范围内的物体,光源强度会线性衰减 对于外角以外的物体,光源无法照射到 效果展示 半径与内外角 半径为0cm,外角60度,内角60度: 渲染器 Blender 半径为0cm,外角60度,内角30度:

    阅读更多、、、

  • 渲染器开发日志(三) 点光

    点光 图形学中,通过点光来模拟小型发光体,如:灯泡、火把、蜡烛等。 这类发光体的特点是从自身表面向周围所有物体发射光线,所以在光线追踪时需要在发光体表面进行采样。 通常使用球体模拟此类物体的形状,根据半径在球表面随机采样。 相关参数 颜色 - 光源颜色 强度 - 光源亮度 位置 - 光源位置 长度 - 光源的影响范围 半径 用于模拟光源尺寸 尺寸不同造成的阴影也不同 参见下图 效果展示 颜色、强度和位置是常识,这里就不进行展示。 半径 通过影子柔和程度可以看出点光半径的大小 半径为0cm,如下图: 半径为5cm,如下图: 半径为20cm,如下图: 相关场景模型取自The Breakfast Room(License: CC-BY)

    阅读更多、、、

  • 渲染器开发日志(二) 平行光

    平行光 光都是由光源体发射出来的,光源体形状和物体形状决定了物体影子。 平行光是为了模拟远距离巨型光源体而构建的概念,这样可以减少对光源体的碰撞运算。 现实中太阳对于地球来讲就是这么一个光源体,远而且巨大。 相关参数 颜色 - 光源颜色 强度 - 光源亮度 位置 - 该参数与平行光无关,但是为便于场景编辑,都会保留此参数 长度 - 光源的影响范围 方向 - 决定了模型的哪些面(依赖法线)可以被照亮 散射角 即一个物体可以从什么角度范围受到光源体的照射 简单来讲散射角度越大,物体可能受到的光照就越多 下面有展示 效果展示 颜色、强度和方向是常识,这里就不进行展示。 散射角 从百叶窗在墙上的阴影形态可以看出光源的大小。 散射角度为0,如下图: 散射角度为2,如下图:

    阅读更多、、、

  • 渲染器开发日志(一) 介绍

    本文介绍渲染器项目的背景、目标和技术,当前项目状态请点这里。 背景 最近几年随着GPU性能的提升和技术的迭代,原本费时费力的光线追踪技术被引入到了游戏中。同时也出现了大量相关项目,推动着渲染技术向前发展。 正因如此也让光线追踪技术变得不那么难,有很多优秀的开源项目帮助我们快速地搭建出属于自己的渲染器。 本人过去几年搞游戏开发,近几年从事家装软件的开发,参与的项目都十分看重画面效果,所以累积了不少渲染技术和想法。 也构建过自己的渲染器,但是在看到UnrealEngine和CryEngine都开源了自己的引擎,就放弃了自己的项目😢。 不过现在在光线追踪方面有了大量开源项目的支撑,可以让我更专注于渲染核心算法,根据自己所积累的技术自由地实现想要的功能😄。 渲染器 现在市面上的渲染器有很多,针对不同市场各自的架构也不同。以下是个人对一些渲染器的了解和看法: OptiX是由NVIDIA提供的光线追踪技术。 OpenShaderLanguage (OSL)是由ImageWorks (来自索尼影视)开源的一款影视级着色语言。 Appleseed 开源项目,有基于CPU进行渲染,具有出色的性能,项目的架构也很有条理。 它是Graffer的默认渲染器,要知道不少影视作品都会使用Graffer,如:《侏罗纪世界2》、《迷失太空》《金刚狼3》、《权力游戏》等。 Mitsuba2 开源项目,由几位行业知名的教授(包括《Physically Based Rendering: From Theory to Implementation》的几位著作者)共同构建。 既可以进行CPU渲染,也可以通过OptiX进行GPU渲染。它非常值得研究和学习。 V-Ray 建筑渲染的翘楚,它与很多公司都有合作,像酷家乐和三维家都有使用此软件。这么多年以来积累了大量经验,渲染效果也是行业标杆。 在最新版中印象最深的是能够输出多层图像到PS,让后期处理变得更加简单。 Iray NVIDIA开发的渲染库,需要购买商业授权。 从介绍来看既可以实时渲染也可以进行影视渲染,功能十分强大,像知名的KeyShot就是基于此库开发的。

    阅读更多、、、

晋ICP备2020009942号-2 beian晋公网安备 14010502050875号