我正在使用一个运行两遍的着色器:
然而,我的问题是第一遍的几何形状遮挡了第二遍的几何形状。即使原始几何体是完全透明的,它也会完全剔除第二遍的几何形状。 The original geometry is a sphere, which as you can see here occludes the result of the geometry shader
第一遍使用这种混合模式:
BlendState SrcAlphaBlendingAdd
{
BlendEnable[0] = TRUE;
SrcBlend = SRC_ALPHA;
DestBlend = INV_SRC_ALPHA;
BlendOp = ADD;
SrcBlendAlpha = ZERO;
DestBlendAlpha = ZERO;
BlendOpAlpha = ADD;
RenderTargetWriteMask[0] = 0x0F;
};
这两个传球目前都使用这个deepstencilstate:
DepthStencilState Depth {
// Depth test parameters
DepthEnable = true;
DepthWriteMask = all;
DepthFunc = less;
StencilEnable = false;
};
两次传球的Cullmode都设置为NONE。
两种传球都有办法使用深度测试,没有第一次传球遮挡第二次吗?
如果需要,我可以将这些传递分成两个着色器,并在引擎中使用两个着色器渲染相同的对象,但我想知道是否可以使用多次传递。