[LayaNative 2.0]渲染队列排序问题,导致Alpha混合效果出错
FrustumCulling._traversalCulling=function(camera,scene,context,renderList){
var validCount=renderList.length;
var renders=renderList.elements;
var boundFrustum=camera.boundFrustum;
var camPos=camera._transform.position;
for (var i=0;i < validCount;i++){
var render=renders ;
if (camera._isLayerVisible(render._owner._layer)&& render._enable){
Stat.frustumCulling++;
if (!camera.useOcclusionCulling || render._needRender(boundFrustum)){
render._visible=true;
var bounds=render.bounds;
render._distanceForSort=Vector3.distance(bounds.getCenter(),camPos);
var elements=render._renderElements;
for (var j=0,m=elements.length;j < m;j++){
var element=elements[j];
var renderQueue=scene._getRenderQueue(element.material.renderQueue);
if (renderQueue.isTransparent)
element.addToTransparentRenderQueue(context,renderQueue);
else
element.addToOpaqueRenderQueue(context,renderQueue);
}
}else {
render._visible=false;
}
}else {
render._visible=false;
}
}
}
render._distanceForSort=Vector3.distance(bounds.getCenter(),camPos);
用这个距离计算出来的值作为渲染队列排队的依据当两个物体有遮挡关系的时候,位置的变化,在某种情况下会引起渲染队列中的元素重新排序后的先后关系错误,导致Apha
之后的效果错误。
下图中的圆圈是要给Quad,应该跟背景图混合,但是由于这个bug,导致圆圈先绘制,背景Quad后绘制,颜色计算错误,
大家,有遇到过这个问题的吗?
var validCount=renderList.length;
var renders=renderList.elements;
var boundFrustum=camera.boundFrustum;
var camPos=camera._transform.position;
for (var i=0;i < validCount;i++){
var render=renders ;
if (camera._isLayerVisible(render._owner._layer)&& render._enable){
Stat.frustumCulling++;
if (!camera.useOcclusionCulling || render._needRender(boundFrustum)){
render._visible=true;
var bounds=render.bounds;
render._distanceForSort=Vector3.distance(bounds.getCenter(),camPos);
var elements=render._renderElements;
for (var j=0,m=elements.length;j < m;j++){
var element=elements[j];
var renderQueue=scene._getRenderQueue(element.material.renderQueue);
if (renderQueue.isTransparent)
element.addToTransparentRenderQueue(context,renderQueue);
else
element.addToOpaqueRenderQueue(context,renderQueue);
}
}else {
render._visible=false;
}
}else {
render._visible=false;
}
}
}
render._distanceForSort=Vector3.distance(bounds.getCenter(),camPos);
用这个距离计算出来的值作为渲染队列排队的依据当两个物体有遮挡关系的时候,位置的变化,在某种情况下会引起渲染队列中的元素重新排序后的先后关系错误,导致Apha
之后的效果错误。
下图中的圆圈是要给Quad,应该跟背景图混合,但是由于这个bug,导致圆圈先绘制,背景Quad后绘制,颜色计算错误,
大家,有遇到过这个问题的吗?
要回复问题请先登录
1 个回复
Aar0n
赞同来自: