Away3D之-----------------DefaultRenderer VS DeferredRender

一. DefaultRenderer 渲染流程


DefaultRender是away3d默认的渲染模式,在每帧绘制时View3D按照以下流程进行绘制:

1. 清空渲染对象列表,并重新填充该列表 _entityCollector:EntityCollector,重新填充渲染对象的方法则是遍历
    场景中的所有节点,判断该节点的包围盒是否在相机的截头体内(EntityCollector::enterNode(node:NodeBase):bool)
    如在相机范围内在存入 EntityCollector._entityHead可渲染对象列表中。  _ scene.traversePartitions(_entityCollector);

2. 如果当前有滤镜效果(后处理),则使用RTT(render to texture)先将当前帧数据绘制到纹理(绘制方式跟正常渲       染方式一致如下所述),在对此纹理与滤镜效果共同绘制到后台缓冲区。   if (_filter3DRenderer && _stage3DProxy._context3D) {
_renderer.render(_entityCollector, _filter3DRenderer.getMainInputTexture(_stage3DProxy), _rttBufferManager.renderToTextureRect);
_filter3DRenderer.render(_stage3DProxy, camera, _depthRender);
}

3. 绘制场景中所有可渲染对象,此处即为DefaultRenderer 与 DeferredRender不同的根本所在,此处为默认的前 向渲染方式DefaultRenderer的渲染流程:

a. 遍历场景中所有灯光如果灯光会产生阴影效果则绘制depthMap以备绘制阴影时使用。
注: 可以通过directionalLight = new DirectionalLight(0, -1, 0); shadow = new HardShadowMapMethod( directionalLight ); 设置绘制阴影图的方式,并将该阴影的绘制方式添加到地面材质中绘制 planeMaterial.shadowMethod = shadow;
b. 遍历当前所有可渲染对象对每个渲染对象分别进行绘制(先绘制不透明再绘制透明对象)。
注: 对每个材质分别进行绘制 为没个材质计算diffuse speculatede等绘制。

 
4. 若有滤镜效果则进行后处理渲染,并将此帧渲染结果提交后台缓冲区。

默认的前向渲染方式是对每个渲染对象的材质分别进行光照效果的计算,这是与延迟渲染的根本的不同。


二. DeferredRender 渲染流程


与DefaultRender相比延迟渲染的流程前两个步骤基本一致,主要区别在与渲染方式的第三步骤,延迟渲染的基本流程是先绘制所有对象获取在后面光照中需要的信息存储在GBuffer中,在进行所有光照的绘制具体流程如下:
注: gbuffer中存储的数据信息有顶点 法线 颜色 深度值等信息 ,在此分别将存放在三张纹理当中。

a. 更新Gbuffer中的数据,为每个可渲染对象分别绘制深度 法线 顶点等数据到buffer中(纹理)
b. 绘制所有灯光信息(绘制到纹理)
c. 将GBuffer和灯光数据再次绘制到后台缓存区.



三. 渲染流程





错误信息"2006 - MySQL server has gone away"表示MySQL服务器连接已断开。这种情况通常发生在执行大型SQL文件时,其中的查询超过了MySQL服务器的最大包大小。默认情况下,客户端和服务器的最大包大小都是16M。解决这个问题的一个方法是增大max_allowed_packet参数的值。可以通过执行"show global variables like 'max_allowed_packet';"命令来查看当前的max_allowed_packet值。然后,可以通过修改配置文件或者在SQL会话中使用SET命令来增大这个值。另外,也可以考虑调整net_buffer_length参数的值,以便更好地适应大型SQL文件的执行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [2006 - MySQL server has gone away](https://blog.csdn.net/qq_43753724/article/details/120822889)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [MySQL教学源码-MySQL入门教程.zip](https://download.csdn.net/download/qq_53122658/88218729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值