愚头的博客

一位图形学爱好者的唠叨

  • 个人笔记 - 2020.11.08

    SYCL

    About SYCL

    这是一个针对高性能计算的抽象层,基于标准的C++语言,规范了并行计算的C++接口,在编译阶段针对不同设备进行并行加速。 例如,对于CPU使用OpenMP进行加速,对NVIDIA的GPU利用CUDA或OpenCL+SPIR进行加速,对AMD的GPU则利用ROCm或OpenCL+SPIR进行加速。 这样最明显的好处是同一套代码,可以充分利用不同的设备来实现高性能计算。

    对于最近几年大热的机器学习和光线追踪来讲,完全可以利用这个技术写一套代码来实现跨设备和平台😄(是真的吗?)。

    Backends of SYCL

    实现 介绍
    oneAPI DPC++ Intel实现的SYCL,基于LLVM并且是开源的。如果不愿意自己编译可以注册申请Intel的DevCloud直接使用(这年头大厂没有个开发云都不能算大厂啊😏)。
    ComputeCPP 这是一个实现最完善的SYCL,由Codeplay Software Ltd.开发,并且已经商用。
    triSYCL 开源项目,由Xilinx开发,就是最近被AMD收购的那家公司。
    hipSYCL 开源项目,由德国Heidelberg大学的HPC技术专家Alpay Aksel主导开发。

    相关文章和项目

    OpenCASCADE发布新版7.5

    从新版介绍来看,此次更新变化较多,有超过400个改进和修正。 另外,有一段时间没有访问官网,发现有了很大变化,变得更靓丽了。

    阅读更多、、、

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

    射灯

    该类型的灯是在点光基础增加了光的散射方向和范围。

    相关参数

    • 颜色 - 光源颜色
    • 强度 - 光源亮度
    • 位置 - 光源位置
    • 长度 - 光源的影响范围
    • 半径 - 与点光半径相同
    • 方向 - 射灯的朝向
    • 内角和外角
      • 对于内角范围内的物体,光源强度不会衰减
      • 对于内角到外角范围内的物体,光源强度会线性衰减
      • 对于外角以外的物体,光源无法照射到

    效果展示

    半径与内外角

    半径为0cm,外角60度,内角60度:

    渲染器 Blender
    renderer-result-light-spot-r00b00 blender-result-light-spot-r00b00

    半径为0cm,外角60度,内角30度:

    阅读更多、、、

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

    点光

    图形学中,通过点光来模拟小型发光体,如:灯泡、火把、蜡烛等。 这类发光体的特点是从自身表面向周围所有物体发射光线,所以在光线追踪时需要在发光体表面进行采样。 通常使用球体模拟此类物体的形状,根据半径在球表面随机采样。

    相关参数

    • 颜色 - 光源颜色
    • 强度 - 光源亮度
    • 位置 - 光源位置
    • 长度 - 光源的影响范围
    • 半径
      • 用于模拟光源尺寸
      • 尺寸不同造成的阴影也不同
      • 参见下图

    效果展示

    颜色、强度和位置是常识,这里就不进行展示。

    半径

    通过影子柔和程度可以看出点光半径的大小

    半径为0cm,如下图:

    renderer-result-light-point-radius0

    半径为5cm,如下图:

    renderer-result-light-point-radius5

    半径为20cm,如下图:

    阅读更多、、、

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

    平行光

    光都是由光源体发射出来的,光源体形状和物体形状决定了物体影子。

    平行光是为了模拟远距离巨型光源体而构建的概念,这样可以减少对光源体的碰撞运算。 现实中太阳对于地球来讲就是这么一个光源体,远而且巨大。

    相关参数

    • 颜色 - 光源颜色
    • 强度 - 光源亮度
    • 位置 - 该参数与平行光无关,但是为便于场景编辑,都会保留此参数
    • 长度 - 光源的影响范围
    • 方向 - 决定了模型的哪些面(依赖法线)可以被照亮
    • 散射角
      • 即一个物体可以从什么角度范围受到光源体的照射
      • 简单来讲散射角度越大,物体可能受到的光照就越多
      • 下面有展示

    效果展示

    颜色、强度和方向是常识,这里就不进行展示。

    散射角

    从百叶窗在墙上的阴影形态可以看出光源的大小。

    散射角度为0,如下图:

    renderer-result-light-direction-angle0

    阅读更多、、、

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

    本文介绍渲染器项目的背景、目标和技术,当前项目状态请点这里

    背景

    最近几年随着GPU性能的提升和技术的迭代,原本费时费力的光线追踪技术被引入到了游戏中。同时也出现了大量相关项目,推动着渲染技术向前发展。 正因如此也让光线追踪技术变得不那么难,有很多优秀的开源项目帮助我们快速地搭建出属于自己的渲染器。

    本人过去几年搞游戏开发,近几年从事家装软件的开发,参与的项目都十分看重画面效果,所以累积了不少渲染技术和想法。 也构建过自己的渲染器,但是在看到UnrealEngineCryEngine都开源了自己的引擎,就放弃了自己的项目😢。

    不过现在在光线追踪方面有了大量开源项目的支撑,可以让我更专注于渲染核心算法,根据自己所积累的技术自由地实现想要的功能😄。

    渲染器

    现在市面上的渲染器有很多,针对不同市场各自的架构也不同。以下是个人对一些渲染器的了解和看法:

    Appleseed

    开源项目,有基于CPU进行渲染,具有出色的性能,项目的架构也很有条理。 它是Graffer的默认渲染器,要知道不少影视作品都会使用Graffer,如:《侏罗纪世界2》、《迷失太空》《金刚狼3》、《权力游戏》等。

    Mitsuba2

    开源项目,由几位行业知名的教授(包括《Physically Based Rendering: From Theory to Implementation》的几位著作者)共同构建。 既可以进行CPU渲染,也可以通过OptiX进行GPU渲染。它非常值得研究和学习。

    V-Ray

    建筑渲染的翘楚,它与很多公司都有合作,像酷家乐三维家都有使用此软件。这么多年以来积累了大量经验,渲染效果也是行业标杆。 在最新版中印象最深的是能够输出多层图像到PS,让后期处理变得更加简单。

    Iray

    NVIDIA开发的渲染库,需要购买商业授权。 从介绍来看既可以实时渲染也可以进行影视渲染,功能十分强大,像知名的KeyShot就是基于此库开发的。

    阅读更多、、、