Run renderman compatible render engine aqsis on armv6

reference http://alvyray.com/Pixar/documents/Pixar_ImageComputer.pdf https://ohiostate.pressbooks.pub/app/uploads/sites/45/2017/09/pixar-image-processor.pdf Pixar Image Computer 启发我写这篇文章的原因是上个月也就是三月份我快速的看了一遍《The Renderman Companion A Program’s Guide To Realistic Computer Graphics》,书里面主要描述的是如何利用Renderman C API接口去实现3D图像的渲染,这本书是在1989年出版的,当时的Pixar已经开发了Renderman渲染接口标准,并且实现了目前电影工业广泛使用的PRMan(PhotoRealistic Renderman实现。其中有意思的是在1986年Pixar还开发了类似今天的Nvidia通用显卡的计算机图形学硬件系统—Pixar Image Computer。 在没了解Pixar之前,我以为Nvidia是最早做显卡的,原来还有更早的Pixar Image Computer,它的使用方式类似现在Nvidia显卡,做为一个扩展卡与本地计算机进行通讯,本地CPU发送数据到Pixar Image Computer中进行计算,然后从Pixar Image Computer中取回计算好的数据。具体架构如下: 设计这样的架构优点就在于以下三点: 通用硬件设计的实现 并行执行图像处理操作 支持多个CHAPs系统 架构设计: Pixel data structure: 所有的Pixar Image System组件都被设计成可以容纳"Pixel data structure"这样的数据结构,其中结构体当中包含RGBA(Red Green Blue Alpha)各个通道的存储信息。 Chap:Chap包含四个处理器,分别用来处理RGBA四个通道的数据,CHAP是一个单指令多数据处理的机器,四个核心处理器会分别在四个通道上执行相同的指令,每一个处理器分别处理对应通道的数据。 CHAP数据处理的循环过程: ALU: 由AMD29116A芯片组成,所有的四个ALU在一个像素点的四个通道数据上执行相同的指令。 Multiplier: 数据由MBUS进入,通过乘法处理将结果输出到ABUS。 Pbus buffer: 像素数据在CHAP和image Memory之间的交换。 Yapbus buffer: 在CHAP与CHAP之间进行数据交换。 Scratchpad: 程序执行期间像素数据高速暂存存储器。 Write crossbar: ABUS的目的地,过滤控制哪些数据可以写入到Scratchpad。 Read crossbar: SBUS的源头,对读取到的数据进行分类。 Yapbus: CHAP与CHAP之间的数据交换。 ...

April 5, 2022

Renderman24 for Blender - Cameras in Blender

参考资料 Renderman 24 For Blender Doc Blender中的摄影机 Blender中的景深 景深(DOF)是一种摄影技术,用于传达构图中的规模(大小)和兴趣区域。 巧妙的使用可以将观众引向图像的某些部分,并通过正确模仿现实世界的镜头来增加逼真度。 RenderMan为具有景深的现实和引人注目的图像提供控制。还有一些非物理性的选项,但对于创造艺术指导的图像来说是非常好的。 要在Blender中开始使用DOF,请进入你要渲染DOF的相机的相机数据属性,然后点击景深旁边的复选框,如下图所示。 F Stop: 像真正的相机镜头一样,这个设置控制了效果的强度。较低的数值会增加模糊度,而较高的数值会减少模糊度。 Ratio: 景深的比例。 Blades: 这决定了虚化效果的形状。如果你选择少于三个边(三角形),虚化效果将是圆形。 Rotation: 这控制了非圆形的虚化形状的边的相遇角度(边的数量大于2)。 Roundness: 从0到1的数值使形状向外弯曲,使其更加圆滑。从0到-1的值使形状向内弯曲,使之更尖锐。 Density: 这控制整个虚化形状的亮度。0到1使它在外边缘更亮,就像猫眼镜头一样(查一查,相当有趣)。0到-1使它在中心更亮,并向边缘逐渐消失。 关于各种光圈控制的更多信息,见Bokeh。 焦点 Focus Distance: 你希望对焦的物体或位置的距离,以场景网格单位衡量。这被称为 “焦平面”。 Focus Object: 你也可以从场景中选择一个物体来作为你的距离。RfB将使用这个值而不是为距离设置的值。 Blender中的运动模糊 让我们来看看一个简单的场景,它展示了运动模糊设置的效果。 下面的图片显示了两个球在第1、2、3帧的位置。 在这个例子中,关键帧是用线性切线制作的,所以当我们观察快门时间时,球会保持一个固定的速度。 运动模糊可以在渲染属性中,在运动模糊面板下启用。 默认情况下,它是不启用的。 渲染属性中的运动模糊,默认情况下是不启用的。 快门时间 开始帧 下面的图片显示了第1、2和3帧的 “开始帧” 模糊。 快门在画面开始时打开。 默认的快门角度为180,意味着快门打开了一半的画面。 注意最后一帧是如何没有模糊的。 这是因为在该帧的快门打开时间之后没有运动。 中间帧 以下图片显示了中间帧模糊,这意味着快门在画面之前打开,之后关闭,以画面为中心。 第一帧和最后一帧的模糊看起来缩短了,因为动画没有延伸到这些帧之外。 结束帧 下面的图片显示了帧结束的模糊,这意味着快门在帧上关闭。 同样,第一帧没有模糊,因为该帧之前没有动画。 运动采样 Motion Samples 我们的红球在第二帧中的模糊看起来有点奇怪。 模糊是水平的,而球真的应该在那条线的中间达到一个顶点。 默认情况下,只有两个运动采样,因为它们很昂贵,而两个通常就足够了。 你可以在渲染属性的Motion Blur面板中改变全局运动样本的数量。或者如果你知道只有某块几何体需要额外的样本,你可以在球体的对象属性中添加它们。在RenderMan Geometry面板下,你会看到一个复选框来覆盖Motion Samples,以及一个Motion Samples属性。 ...

January 25, 2022

Renderman24 for Blender - Rendering in Blender

参考资料 Renderman 24 For Blender Doc Blender中渲染 Blender中的集成器 集成器接收摄像机的光线,并将结果返回给渲染器。对于主要的集成器来说,这些集成器是对沿射线从外部看到的表面的光能(辐射度)的估计。这些主集成器负责计算整体的光传输,也就是说,光从光源穿过你的场景,从物体到物体(或者穿过物体和体积),到达摄像机。在特殊情况下内部集成器可以协助处理表面或体积内的光线。我们提供了三种主要的用于生产环境的集成器,尽管用户可以用自己的集成器来代替。 PxrPathTracer 实现了一个单向的路径追踪器。它将击中点的材质信息与光线样本结合起来,以估计直接照明和阴影,然后产生/发射额外的光线来处理间接照明。这对环境光和大型直接光源很有效。通常,外部场景,由圆顶灯/HDRI照明的场景以及许多典型的视觉效果镜头都是用这个集成器渲染的。 PxrVCM用双向路径追踪来扩展它。除了来自摄像机的路径之外,它还追踪来自光源的路径,并试图将它们连接起来。它可以解决复杂的间接路径,这些路径可能在PxrPathTracer中收敛得很慢。特别是,它被设计用来处理镜面光晕。光晕是光线在反射或折射到表面后重新聚焦的一种效果。上面的图片展示了这两种效果。如果你的场景需要这些效果,或者你有复杂的照明,其中一些灯可能被覆盖或隐藏在灯具中,那么PxrVCM集成器是你最可能的有效选择。 PxrUnified是可用的,但目前是试验性的,直到它支持商业版本RenderMan的所有功能。 在Blender中设置集成器 默认情况下,RenderMan for Blender会使用PxrPathTracer作为场景的整合器。要设置/使用一个不同的集成器,请进入渲染属性,并点击添加RenderMan集成器节点树。 然后你应该看到像这样的画面。 你可以通过使用下拉菜单选择不同的集成器。 注意,Blender中的集成器只是world node中的着色节点shading nodes。如果你在着色器编辑器中查看world node的着色节点,你应该看到像这样的节点。 Blender中的采样和显示滤镜(Sample && Display Filters) 采样和显示滤镜插件分别用于在集成器产生着色采样值和像素值后,在它们被发送到显示驱动display driver之前,对它们进行调整。 采样滤镜 Sample Filters 采样滤镜插件描述了在对采样值进行像素过滤之前对其进行的颜色转换。 它们在像素滤波应用于原始相机射线样本之前对其进行操作。 一旦一个采样过滤器改变了一个样本,并且进入了帧缓冲区,它就会成为任何渲染图像(包括深层图像)的永久组成部分。请注意,如果一个单一的任意输出变量(AOV)作为多个图像文件的一部分被输出,对一个样本的单一改变可能会影响到所有的文件。采样过滤器所做的改变也会影响自适应采样器。 PxrSampleFilterCombiner PxrCryptomatte 显示滤镜 Display Filters 显示滤镜插件描述了在像素过滤后和输出前对最终像素值进行的颜色转换。 在这一点上,多个图像共享的AOV被认为是不同的,可以单独修改。目前不支持深层图像的显示过滤器,对自适应采样器没有影响。 PxrLightSaturation PxrDisplayFilterCombiner PxrImageDisplayFilter PxrShadowDisplayFilter 在Blender中的设置 你可以在渲染属性中创建显示和采样过滤器。点击Add RenderMan Display Filters Nodetree按钮或Add RenderMan Sample Filters Nodetree。 你应该看到"Display Filters" 和 “Sample Filters"的面板展开,类似于以下情况。 点击添加RenderMan显示滤镜节点将自动添加一个PxrBackgroundDisplayFilter节点,并继承World颜色作为背景色。 可以使用多个显示和采样过滤器。点击 “添加 “将添加一个新的槽,可以添加一个额外的显示过滤器或样本过滤器。要删除一个过滤器,点击名称旁边的-按钮。像集成器一样,显示和样本过滤器只是world node内部的着色节点。 ...

January 24, 2022

Renderman24 for Blender - Stylized Rendering and Lighting

参考资料 Renderman 24 For Blender Doc 风格化渲染 风格化的船舶形状是由9 to 3 Animation的Ernst Janssen Groesbeek创建的,船舶概念由Ian McQue创作,机器人概念由Ruslan Safarov创作,模型由Cheyenne Chapel, Aliya Chen, Damian Kwiatkowski, Alyssa Minko, Anthony Muscarella和Miguel Zozaya制作。 © Disney/Pixar - RenderMan “Shipshape” Art Challenge Blender中的风格化外观 在Blender中使用风格化外观进行渲染是非常直接的,只需要几个简单的步骤。 在使用Stylized Looks进行渲染之前,请确保在你的场景中添加一个灯光,并为你的物体附加一个RenderMan材质。 在视口中点击右键,选择RenderMan → Stylized Looks → Stylized Looks Editor。 启用风格化外观,选择一个对象,然后从Attach Stylized Pattern中选择一个PxrStylizedControl。 按OK键现在将创建所需的PxrStylizedControl节点并附加到机器人模型的PxrSurface上。 PxrStylizedControl网络需要附加到场景中的每个物体上,并允许对每个物体进行单独的阴影控制。 这也可以通过选择一个物体和RenderMan→风格化外观→附加风格化图案→PxrStylizedControl来实现。 使用RenderMan Stylized Editor,你现在可以开始添加Stylized Filters,开始创建你独特的Stylized Look。 在这个例子中,我们将添加一个PxrStylizedHatching过滤器。 现在,启动IPR,你的场景现在将以风格化的外观进行渲染 注意:在这个例子中,默认的设置已经被调整过了,具体如下。 a) Signal Energy From: 反照率AOV b) Blending Mode: 加权 ...

January 22, 2022

Renderman24 for Blender - Shading

参考资料 Renderman 24 For Blender Doc 着色 RenderMan for Blender中的材质和着色网络的建立方式与Blender的内置渲染器基本相同,都是使用Shader Editor。但是,有一些快捷方式和用户界面部件是不同的。 添加材质 你可以使用 “对象上下文菜单 “中的快捷键将材质(bxdf)附加到选定的对象上。 这将把选定的材质附加到大纲目录中的选定对象上。 你也可以在 “材质属性 “选项卡中,以通常的方式将材质附加到一个物体上。 点击新建。 然后点击添加RenderMan节点树 并选择你想使用的RenderMan材质。 RenderMan着色网络总是以RenderMan材质输出节点为终点。 下面是一个着色网络的例子。 样式/模式Patterns 样式节点可以用Shader Editor的常规方式连接到材质或其他样式上,或者直接在Material properties Tab中连接。 对于可以接受样式连接的参数,在参数值旁边会显示一个。这就是我们的连接小部件。 点击这个小部件将显示我们的连接菜单。这里有一个例子。 模式将被分成几类,以便于浏览。__EXISTING__部分将显示着色器图中现有的节点,你可以连接到这些节点。如果参数已经被连接了,会出现一些更多的选项。 最上面一行将显示当前连接到这个参数的节点。断开项目将断开该参数与传入节点的连接。移除项目将断开并从图中移除传入的节点。Solo Input Node(单独输入节点)允许你单独传入的节点。如果你想集中精力调整这个节点,这是很有用的,与整个材质无关。 Blender置换 要在RenderMan for Blender中渲染几何体的位移,请使用PxrDisplace 节点。 添加PxrDisplace 要添加PxrDisplace,确保你已经为你的几何体添加了一个RenderMan材质。在材质属性中,在位移Displacement面板下,从 “位移Displacement “旁边的下拉列表中选择PxrDisplace。 你可能要处理的主要参数是。 Gain: 位移的增益,如果它是零,就没有位移。 Scalar Displacement: 标量位移的输入。这是一个浮动的位移。 Vector Displacement: 矢量位移输入。矢量位移数据是一个三通道数据文件,XYZ。 还有一些关于Displacement的实用模式。 对于变换相关的功能,使用PxrDispTransform模式。 对于位移Displacement分层,使用PxrDispScalarLayer和PxrDispVectorLayer 模式。 避免多边形网格出现裂缝 当用硬法线置换网格时,面会分离并产生裂缝。置换会沿法线方向移动顶点,但硬边不同一侧的相邻顶点具有不同的法线,会向不同的方向移动,从而产生缝隙或裂缝。 RenderMan有一个"polygon:smoothdisplacement"属性,它将创建一个完全平滑的法线副本,并使用它代替原始法线。 在RenderMan for Blender中,这个属性是由网格上的对象数据属性中的 “Prevent polygon cracking"复选框启用的。 ...

January 21, 2022

Renderman24 for Blender - Geometry

参考资料 Renderman 24 For Blender Doc Renderman 20 Doc 几何体 Blender归档 导出到RIB归档 要将一个几何体或一组几何体导出到RIB存档,选择对象,进入对象属性,在RenderMan几何体面板下,选择导出,然后将对象导出为存档。 你还可以选择是否要导出分配给几何体的材质,以及是否要将所有的帧存档。 如果你预计需要覆盖存档对象上的材料,请取消选择导出材料。 导入RIB档案 你可以从添加菜单中导入RIB档案。 覆盖材料 如果你想给RIB档案附加一个材料,你可以使用对象属性中的材料覆盖面板来实现。注意:如果存档中的对象本身已经有一个材料,那么它将被优先考虑。 Blender中的OpenVDB体块 要添加一个OpenVDB体积几何,请使用添加菜单中的导入OpenVDB。 这将添加一个Blender OpenVDB节点,以及附加一个PxrVolume着色器。下面是一个使用OpenVDB网站上的bunny_cloud.vdb例子的渲染。 OpenVDB的属性Attributes Filter Width: 如果设置为0,则禁用mipmapping。如果大于0,小于1的值偏向于更精细的mipmap级别,大于1的值偏向于更粗糙的级别。 Density Multiplier(密度乘数): 对体积的密度网格中的数值进行缩放。这应该比缩放着色器中的密度更有效。 Density Rolloff: 大于0的值在密度值中产生一个对数的衰减。较小的滚降值产生较大的衰减。 DSO Min/Max: 目前只用于aggregate volumes,并且只用于使用ImplicitField DSO Volumes(如OpenVDB)。如果设置为1,DSO可以直接使用文件中存储的信息来计算卷内的最小和最大值。这可以让渲染器避免在前面对体积进行着色,从而大大减少到达第一个像素的时间。只有在直接使用体积中的密度信号,或者密度信号仅由DSO本身调制的情况下,才能启用这个功能。任何对密度信号的着色修改都需要将这个参数设置为关闭。 Blender中的程序性基本元素 对于程序性基本元素,RenderMan for Blender同时支持程序性基元DSO(dynamic shared objects)和RunProgram。关于如何编写/编译这些类型的程序性基元的更多信息,请参见《开发者指南》中的这一部分。 添加 您可以从添加菜单中添加任一类型的程序性基元。 DSO 要向你的 RunProgram 传递参数,请在 RenderMan Geometry 面板下的对象属性中查看;应该有一个 Dynamic Load DSO 子面板。 Blender中的四边形基本结构 添加菜单中的这个菜单可以创建RenderMan四边形基元。 这里是所有可用的四维基元的渲染。从左到右。 球体、圆柱体、圆锥体、圆盘、环形体 ...

January 18, 2022

Renderman24 for Blender - USER INTERFACE

参考资料 Renderman 24 For Blender Doc 用户界面 Blender中的预设浏览器 Blender中的预设浏览器允许你保存和重新使用资产,如材料、灯光装置和环境贴图(HDR图像)。RenderMan已经配备了一个预制资产库。更多的资产也可以从RenderMan网站的 “资源 “栏目中下载。 启动预设浏览器 要调出预设浏览器,在视口中按’n’键调出侧面面板,点击Renderman标签,你应该看到一个RenderMan预设面板。点击 “预设浏览器 “按钮,就会弹出用户界面。 你也可以从视口的右键菜单中调出预设浏览器。 界面 默认情况下,预设浏览器将使用RenderMan自带的工厂库。在窗口的顶部,你会看到库的名称,以及磁盘上库的完整路径。 锁定的图标表示这个库是只读的。资产可以被导入到场景中,但资产不能被写入库中。 预览图显示了当前选定的预置的预览,在右边,是当前选定的预设的元信息。 在预览图的下面是一些按钮,允许你从当前选定的灯光中保存灯光设置,从当前选定的物体中保存材质,或者保存环境贴图。 对于最上面的一行。 Add Library - 这个按钮将允许你添加一个新的库到预设浏览器中。如果选择了一个空的文件夹,或者在选定的文件夹中找不到现有的库,那么工厂库将被复制到该文件夹中。 Select Library - 这个按钮允许你从被添加到预设浏览器的现有库中选择。 Forget Library - 这个按钮将告诉预设浏览器从保存的库列表中忘记/删除当前库。 Edit Library Info - 这个按钮将让你编辑当前库的元信息,包括名称和版本。 左边显示的是资产的类别。你可以使用+和-按钮添加或删除类别。注意,顶层的类别(EnvironmentMaps, LightRigs, Materials)不能被删除。 右边是当前所选类别的可用资产,下面是操作菜单。 Import and Assign to selected: 导入当前资产并将其分配给当前选定的对象。这只适用于材料。 Import:这只是将当前资产导入到场景中。 移动到类别:这允许你将当前资产移动到另一个类别。 Inspect json file:这允许你查看当前资产的磁盘上的.json文件。 Delete:删除当前资产。 快捷操作 预设浏览器的部分内容也可以从视口的右键、对象上下文菜单中获得。 这里,当前选择的类别的资产是可用的。在这种情况下,如果一个对象被选中并选择了银色油漆,银色油漆的资产将被导入并分配给该对象。你也可以通过使用选择类别菜单来改变类别。 光线连接编辑器 Light Linking Editor 灯光链接编辑器允许你控制场景中哪些物体被特定的灯光照亮或不被照亮。 ...

January 18, 2022

Renderman24发布并在Blender中使用

Renderman 24 发布新功能 Render Engine XPU 技术发布,同时使用CPU和GPU渲染图像。 使用XPU进行视效阶段的开发,加快创作速度。 Modular Materials 先进的分层材质开发。 先进的毛发材质开发。 风格化的视觉效果。 采用精准的ACES色彩管理系统。 支持Blender。 OpenSUSE install Renderman 24 NCR 在OpenSUSE上安装NCR(Non-Commercial)版本的Renderman,需要在Renderman Store上通过邮箱注册,由于Linux系统间的差异,需要注意以下几点: zypper install libopenssl1_0_0; ln -sv /usr/lib64/libssl.so.1.0.0 /opt/pixar/RenderMan-Installer-ncr-24.3/lib/3rdparty/Qt-5.12.6/lib/libssl.so libssl 需要使用1.0.0的版本,opensuse原生使用的是libssl.so.1.1,openssl版本不兼容,安装程序会出现Failed to query serial number: an unknown network-related error was detected 下载icu-release-50-2.zip,编译并安装。 RenderMan-Installer-ncr-24.3 需要用到该依赖。 zypper install libncurses5 RenderManProServer需要用到libtinfo.so.5依赖库。 Blender Renderman 插件 目前测试的blender版本为blender-2.93.7,插件下载地址RenderManForBlender,插件的兼容版本为: RenderMan 24.3 (2208291)

January 17, 2022