blender工程_Blender源码结构

本文介绍了Blender从2.79到2.81的发展,特别是2.81版本中采用Optix加速Cycles光线追踪的改进。此外,探讨了Blender的源码结构,包括intern、extern和source三个部分,并提供了编译Blender的步骤。Blender的未来发展趋势虽然未知,但正逐渐获得关注。
摘要由CSDN通过智能技术生成

最开始听说到blender还是2.79版本的时候,那时候blender还是一个比较小众的软件。建模和渲染的软件有很多,渲染器有些是开源的如Mitsuba、luxrender等等,大部分都不开源如做成插件的renderman,软件内置的Arnold、vray等。建模的软件能通过源码来更加了解的软件就更少了。到2.8的版本,印象较深的改变是出了eevee实时渲染引擎。在2.8出了之后变得有更多人关注了,如amd、英伟达、育碧等,但我个人感觉blender当前也还没成为主流的软件。让我超出预期的是2.81版本的更新内容非常多,上述公司的关注对blender是有帮助的。blender未来能否发展为主流的软件是未知的,但是总体来说发展趋势确实是越来越好了。

Blender 2.81更新内容 - Blender中国社区​www.blendercn.org
c68466e940b7830817c88b2a1ad76f53.png

2.81的改进之一是使用optix来加速cycles(是blender离线渲染引擎的名字)光线追踪。我们熟知的有windows平台上的dxr管线。而optix使得其他操作系统(如linux)也能使用n卡的光线追踪硬件。下图是optix和dxr的区别,图片链接。

676e5f28af32e143cba467fdd1c09940.png

可见,其中dxr管线的shader languages是hlsl然后生成为dx12的中间字节码表示,vulkun使用hlsl,glsl生成spir-v中间格式,而optix 7支持cuda,osl(Open Shading Language),mdl(Material Definition Language,下面是介绍链接)。optix 7是使用10.1版本的cuda构建的,它实际上是使用的cuda api,但是使用optix sdk开发的应用程序不需要安装cuda toolkit,因为cuda运行时会把其转化为设备相关api。

Material Definition Language - Module base.mdl​raytracing-docs.nvidia.com

假如还想知道更多平台的shader language和optix可以通过下面链接了解

NVIDIA英伟达:基于RTX的NVIDIA OptiX光线追踪​zhuanlan.zhihu.com
76d27f49ae63fcaa2831bb9a3755373b.png
叛逆者:Shader交叉编译之梦​zhuanlan.zhihu.com
9b043368412618495af0ee19b307fb92.png
周秦:跨平台引擎Shader编译流程分析​zhuanlan.zhihu.com
a95efb6b9e8cfeb9205b5b497b19e112.png
丛越:游戏引擎随笔 0x05:现代图形 API 讲义​zhuanlan.zhihu.com
08723fc29aec64571f3118d77b505443.png

那么至此2.81中cycles支持的渲染方式有cpu、gpu通用计算管线cuda、opencl、optix。

如何自己编译blender可以通过blender官方的步骤:

Building Blender/Windows​wiki.blender.org

blender的编译需要两个部分

一个部分是由svn来版本控制的预编译lib,在下图为pre-compiled libraries部分

另外一个部分是由git来版本控制的源码,其中有三种,分为intern、extern和source三种,intern是blender开发的较为底层的一些源码,extern是非blender开发(如物理引擎bullet)的源码,source是较为上层的源码。这也能从图片左侧的路径看得出,source为blender/source路径,intern为blender/intern,extern为blender/extern。而上面的一部分的预编译lib路径和blender文件夹是同级的,为lib/。

a0fcbc15278af84725f245aec3e3292c.png

有了这两个文件就可以使用cmake来构建出visual studio的工程了。

然后可以看这个链接

Style Guide - Blender Developer Wiki​wiki.blender.org

它是讲述blender的编码规范的。如bool变量使用true, false,而不是使用1,0。在分配运算符(如=, +=, /=等等)左右留一个空格。

后面会对blender部分源码进行分析。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值