最开始听说到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.org2.81的改进之一是使用optix来加速cycles(是blender离线渲染引擎的名字)光线追踪。我们熟知的有windows平台上的dxr管线。而optix使得其他操作系统(如linux)也能使用n卡的光线追踪硬件。下图是optix和dxr的区别,图片链接。
可见,其中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.mdlraytracing-docs.nvidia.com假如还想知道更多平台的shader language和optix可以通过下面链接了解
NVIDIA英伟达:基于RTX的NVIDIA OptiX光线追踪zhuanlan.zhihu.com那么至此2.81中cycles支持的渲染方式有cpu、gpu通用计算管线cuda、opencl、optix。
如何自己编译blender可以通过blender官方的步骤:
Building Blender/Windowswiki.blender.orgblender的编译需要两个部分
一个部分是由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/。
有了这两个文件就可以使用cmake来构建出visual studio的工程了。
然后可以看这个链接
Style Guide - Blender Developer Wikiwiki.blender.org它是讲述blender的编码规范的。如bool变量使用true, false,而不是使用1,0。在分配运算符(如=, +=, /=等等)左右留一个空格。
后面会对blender部分源码进行分析。