After working with DCC software for so many years, I saw the realtime solution went forward so much, also more and more low-level. As the game engine, 10 hears ago the game engine was such a challenge that now everything become so cheap, everybody could own it. But to the DCC software, with the birth of CG industry, actually most of them are very old/classical, but if we still don't learn anything new from the mistakes, and didn't figure out the boundry of the problems we have, that's not a bright future LOL.

Here are some popular realtime frameworks used by popular DCC software.

  • OpenSceneGraph Popular framework for visualization, used by many projects widely, such as Foundry Katana. It has a complete object model as a 3D rendering system also with a lot of utility libraries such as osgFX. But to the rendering, it just wraps the OpenGL API, the style is almost near to the traditional OpenGL.
  • PIXAR Hydra Still a traditional framework. As a critical part of the huge USD, it depends on the other components of USD. Whatever how complicated the architecture it is, it still doesn't solve the critical problem.
  • Autodesk VP2 (OGS One Graphics System) Used by Autodesk M&E products, the 3dsmax and Maya. The idea is to cover the all main stream API thought single API, now it supports both OpenGL and DX as the two most important backends.

Now let's think about the reality. What's the bottleneck of the DCC software on viewport ? Usually if we have the numerous different object, the interactive performance will be go down, or use too much memory to consolidate the world which means pack the static geometry data as much as possible to reduce the number of draw calls. Okay, now let's back to the reality and the real problem. Today, the latest graphics API become more and more low level, means the application could really find a proper way to maximal the performance.

If I design a rendering system for a DCC software, what will I do ? First of all, an abstract layer for the low level of API, both Vulkan and DX12. Because now, from the practical point of view, no big difference between Vulcan and DX12, but just the vendors considering their monopoly position for target platforms. So in future, there might be a new API or middleware to cover this requirement.

Based on 1), application supplies an asynchronized frameworks, there is an Gather/Reduce mechanism which will have a global statistical info about rendering entities. From the object model side, it sends the request to generate hashed rendering data, and tell the graphics system how many instance, and how many variants it might have. This logic works as the 1st level, then later at the 2nd level, the graphics system will aggressively reduce the draw call by packing the data.

The other features ? In my opinion, even not necessary if still based on realtime solution. Such as hardware shadowing in the viewport. Actually in the DCC software, most of the time, people even don't care about shadowing, but the draw performance for the layout. And also, realtime rendering, now is still less flexible than offline rendering, because in a nutshell, "realtime rendering" equivalents to "pre-rendering".

After so many years, people had invented so many useless craps, from the AMD Ashli, tried to translate RenderMan shader into realtime shader directly, or later the Autodesk ShaderFX, another unfinished crap, even the main developer just left. People always search a way to clone the offline rendering features into the viewport.

Actually today, with high performance Path Tracing renderer, if turn off the AA, the software rendering performance is totally acceptable, and much more reliable than the realtime rendering generated image.

Revise the fundamental concept.

  • To the realtime rendering, the "renderer" equals to "rendering logic", executor is the GPU.
  • But to the offline rendering, the "renderer" equals to "renderer logic" + "external logic", executor usually is the CPU.

So, still, back to the reality, what's the best solution for the user ? My answer is, super fast viewport with good extensible feature for the offline renderer. We even don't have to spend any time to do realtime shadowing, but focus on the geometry optimisation. We don't need realtime displacement, because for the production, the viewport will definitely die. But we need a way to check qualities, such as UV rendering, simple texture rendering, vertex attribute rendering, which is necessary for the DCC software. User could directly preview the real production frame, but don't have to care the viewport. To the viewport, it must be able to handle massive different objects, that's the most important things in future production.

Unlucky, today we are surrounded by the all advertising bullshit, whatever how good the demo it is, just the demo, if people do believe demo, that means not professional or lying. So easy.

DCC Software and Graphics System的更多相关文章

  1. 《Small Memory Software:Patterns For System With Limited Memory》读书笔记

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/13297447 虽然摩尔定律让我们的计算机硬件得以以指数速度升级,但反摩尔定律又不断消减这些 ...

  2. PatentTips - Sprite Graphics Rendering System

    BACKGROUND This disclosure relates generally to the field of computer graphics. More particularly, b ...

  3. Method, apparatus, and system for speculative abort control mechanisms

    An apparatus and method is described herein for providing robust speculative code section abort cont ...

  4. Intel graphics processing units

    http://en.wikipedia.org/wiki/Comparison_of_Intel_graphics_processing_units Comparison of Intel graph ...

  5. Chromium Graphics : GPU Accelerated Compositing in Chrome

    GPU Accelerated Compositing in Chrome Tom Wiltzius, Vangelis Kokkevis & the Chrome Graphics team ...

  6. PatentTips - System and method to deprivilege components of a virtual machine monitor

    BACKGROUND INFORMATION An embodiment of the present invention relates generally to virtualization pl ...

  7. Role-based access control modeling and auditing system

    A role-based access control (RBAC) modeling and auditing system is described that enables a user to  ...

  8. System and method for dynamically adjusting to CPU performance changes

    FIELD OF THE INVENTION The present invention is related to computing systems, and more particularly ...

  9. [wikipedia] List of free and open-source software packages

    List of free and open-source software packages From Wikipedia, the free encyclopedia     This articl ...

随机推荐

  1. 基于百度定位及天气获取的DEMO +fragment+sharedpreference

    此工程较BaiduLocationXML相比:1.植入fragment,结合微信UI2.在原本主界面的button  textview  textview 移植到Fragment13.增加网络判断,网 ...

  2. css盒子模型层级3D图

    作为前端开发工程师,大家都应该知道盒子模型.下面用一张图来表达3D盒子模型的层级关系 大家可以看到background-color 在background-image的下一层.这个希望对大家有帮助

  3. C# 列主元素(Gauss)消去法 计算一元多次方程组

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. fopen和fopen_s用法的比较 【zz】

    在定义FILE * fp 之后,fopen的用法是: fp = fopen(filename,"w").而对于fopen_s来说,还得定义另外一个变量errno_t err,然后e ...

  5. 使用查询(SQ01、SQ02、SQ03)创建报表

    查询需求说明 通过Query(SQ01.SQ02.SQ03)实现根据销售组织查询销售订单中的各项信息,包括物料.金额.成本,以及毛利. 其中对销售组织进行权限检查(Authority Check),字 ...

  6. linux安装eclipse

    1  采用ssh无法运行eclipse, 错误如下: Autolaunch error: X11 initialization failed.\n,  打开日志文件: org.eclipse.swt. ...

  7. BZOJ 3670 && BZOJ 3620 && BZOJ 3942 KMP

    最近感到KMP不会啊,以前都是背板的现在要理解了. #include <iostream> #include <cstring> #include <cstdio> ...

  8. sqlserver OpenRowSet 对应的三种数据库驱动

    在使用sqlserver数据库的OpenRowSet函数时,会遇到三种驱动方式: 1. MSDASQL驱动SELECT TOP 10 * FROM OPENROWSET('MSDASQL', 'DRI ...

  9. dedecms recommend 注入 exp

    我看没人用python写过发过 所以我就发一下 喜欢用python的就用我这个吧 不喜欢的就用JAR那个或者PHP那个吧 #coding:GBK import  re import urllib &q ...

  10. VC2010 MFC中实现printf调试功能,即MFC程序利用控制台输出调试信息。

    1.在项目自动生成的stdafx.h文件中添加下面头文件 #include <io.h> #include <fcntl.h> #include <stdio.h> ...