DCC Software and Graphics System
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的更多相关文章
- 《Small Memory Software:Patterns For System With Limited Memory》读书笔记
原文地址:http://blog.csdn.net/jinzhuojun/article/details/13297447 虽然摩尔定律让我们的计算机硬件得以以指数速度升级,但反摩尔定律又不断消减这些 ...
- PatentTips - Sprite Graphics Rendering System
BACKGROUND This disclosure relates generally to the field of computer graphics. More particularly, b ...
- Method, apparatus, and system for speculative abort control mechanisms
An apparatus and method is described herein for providing robust speculative code section abort cont ...
- Intel graphics processing units
http://en.wikipedia.org/wiki/Comparison_of_Intel_graphics_processing_units Comparison of Intel graph ...
- Chromium Graphics : GPU Accelerated Compositing in Chrome
GPU Accelerated Compositing in Chrome Tom Wiltzius, Vangelis Kokkevis & the Chrome Graphics team ...
- 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 ...
- 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 ...
- 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 ...
- [wikipedia] List of free and open-source software packages
List of free and open-source software packages From Wikipedia, the free encyclopedia This articl ...
随机推荐
- 二叉搜索树 C++代码实现
暂未发现什么bug,如果发现请指出. #include<iostream> using namespace std; //定义二叉搜索树的结点 struct Node { int data ...
- Javascript中封装window.open的例子
对window.open进行封装, 使其更好用, 且更兼容, 很多人说window.open不兼容,其实不是, 因为不能直接执行, 必须通过用户手动触发才行;看代码: 代码如下 复制代码 var op ...
- ubuntu安装过程中的一些问题
安装了ubuntu后,用scp命令从另外一台电脑上复制文件过来,没有执行权限,查看执行文件的目录,文件所有者全部是root/root, 原来scp是sudo状态下操作的,所以复制过来的文件都属于roo ...
- 用php完成数据库的增删改查
<?php//一.连接数据库$con = mysql_connect("localhost","root","");//二.验证是否连 ...
- Html5简单存储localStorage和sessionStorage
localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 1.localStorage : localStorage 没有时间限制的 ...
- C语言之const和define
const修饰的是只读变量,不是常量,其值在编译时不能被使用,因为编译器在编译时不知道其存储的内容.编译器通常不为普通const只读变量分配存储空间,而使将他们保存在符号表中,这使得他成为一个编译期间 ...
- HDU 5234 DP背包
题意:给一个n*m的矩阵,每个点是一个蛋糕的的重量,然后小明只能向右,向下走,求在不超过K千克的情况下,小明最终能吃得最大重量的蛋糕. 思路:类似背包DP: 状态转移方程:dp[i][j][k]--- ...
- 2015GitWebRTC编译实录14
libvpx 尝试用脚本编译了下,发现有问题,就偃旗息鼓,改用他自己的configure了,在网上找了下,Git上有个现成的,直接用,更好些. https://github.com/brion/VPX ...
- jquery事件重复绑定的快速解决方法
click等事件 解决:使用unbind("click")方法先解除绑定的事件再绑定新事件,即在给对象绑定事件之前先移除该对象上的原有事件 1 $("#test2&quo ...
- 億万笑者 - Radwimps
億万笑者 作曲:野田洋次郎 作词:野田洋次郎 明日に希望を持った者だけに 絶望があるんだ何かを信じた者だけに 裏切りはあるんだ勇者だけに与えられた 名誉の負傷とでも言うのかそれにしてはずいぶんと 割に ...