Elara渲染器技术特性
跨平台
- 基于平台抽象层构建,轻松移植
- 支持Windows, Linux, macOS, x64架构
- 支持使用CPU或者GPU设备进行加速渲染
数据流架构
- 所有数据仅在需要时才被生成
- 只有需要用到的数据才会被加载到内存
- 所有计算自动多线程并行
- 无锁的任务系统能够最大化并行度
过程化生成
- 在渲染时生成过程化几何体,只有需要用到的几何体才会被动态创建
- 用户可以递归的定义子场景,轻松重用场景资产
- 过程化生成是完全多线程的
几何体近似
- 置换映射可以任意移动顶点位置
- 几何体能够被镶嵌到足够精细,反映表面的任何细节
- 镶嵌可以是视点相关的,或者是视点无关的
- 同一个物体的不同实例可以有不同的镶嵌设置
- 几何体近似是完全多线程和按需生成的
- 集成了OpenSubdiv以提供内置的细分曲面支持
递增式场景修改
- 定义动画时,用户可以只定义每帧中有变化的部分数据,而不是重定义整个场景
- 系统自动利用动画中的时间连续性,避免不必要的计算
- 天生支持交互式应用,能够用于支撑完全光线追踪的视图
采样
- 随机化半蒙特卡洛采样
- 更少的采样痕迹
- 更快的收敛速度
- 多重重要性采样
运动模糊
- 形变产生的运动模糊
- 变换产生的运动模糊
- 运动模糊对渲染性能影响很小
景深
- 可以使用lens shader来对景深进行编程
- 景深对渲染性能的影响很小
无偏的全局照明
- 基于unidirectional path tracing的无偏全局照明
- 使用BRDF,基于物理的着色
- 动画无闪烁
- 无插值瑕疵
- 无需预计算
- 无需额外内存空间
- 完美分布式/并行
- 光线追踪的次表面散射
有偏的全局照明
- GI Cache:易渲科技独创的有偏全局照明算法
- 对于室内场景,速度是unidirectional path tracing的20倍
- 易于使用,参数简洁
渐进式渲染
- 渐进式渲染可以用于交互式的场景预览
- 2秒内提供快速反馈
- 渐进式渲染可以关闭(变为最终帧渲染模式)
节点系统
- 插件式节点系统
- 用户可以为物体、面、顶点添加用户数据,系统自动为shader插值这些数据
- 我们总是使用节点系统API发布新功能,大大减少了我们的维护成本,并解决了后向兼容的问题
基于有向无环图的场景结构
- 使用现代的DAG概念管理场景
- 非常灵活,易于集成到现代的3D应用中
着色系统
- 天生支持Open Shading Language,可以用于对surface shader, displacement shader, volume shader, environment shader, atmosphere shader等进行编程
- 基于C++编程接口的geometry shader(过程化几何体), light shader, lens shader
- Shader图
- 延迟shader graph求解,求解结果会被缓存并重用
纹理
- 按需加载的纹理缓存系统,针对多线程精心优化
- 纹理过滤模式:pyramid,EWA
- 支持市面上绝大多数图像格式,包括PNG, JPEG, TIFF, OpenEXR, HDR, TGA, BMP, PTEX等
- 独有的Ultra Texture Cache,纹理处理性能是OpenImageIO的2-100倍
毛发几何
- 内置支持毛发几何类型
- 高效的毛发几何储存方式
- 解析的光线追踪曲线算法,无需预先镶嵌,无需额外内存
AOV
- 用户可以为单次渲染定义任意多个图像输出
- 如果shader参数与某图像输出同名,则shader参数的值自动被输出到该图像
体渲染
- 系统自动判断当前光线段上有哪些体积,并调用对应的volume shader
- 独有的体渲染重要性采样技术
- 内置OpenVDB支持,自动跳过体积中空的区域
- 与其它效果完全集成
场景描述语言
- ESS,易于阅读的场景描述文本格式
- 系统可以记录API调用并输出为ESS
- 用户可以把当前场景的快照输出为ESS
- 超高性能的ESS Parser,从普通硬盘加载1GB的ESS文件的时间只需要3s
易用性
- 精简设计的参数
- 直观的用户界面
- 默认参数在大多数情况工作的很好
- 系统自动优化渲染
- 基于物理,渲染就像拍照
- 用机器时间来交换人力成本
- 与传统的渲染方式兼容