3d RGBA8色带伪影

3d RGBA8色带伪影,3d,rendering,shader,3d,Rendering,Shader,我的3d应用程序在渲染到RGBA8渲染目标时会出现色带瑕疵。如何摆脱它们(而不必以更高的精度渲染到缓冲区) 更新 渲染过程基本上是: 1) 将几何体渲染为纹理 2) 应用全屏后处理步骤(对比度、亮度、饱和度、色调映射和gamma校正) 这里有两个屏幕截图,一个使用rgba8目标,另一个使用rgba16f目标。都是在禁用后处理步骤的情况下渲染的。如您所见,rgba8渲染中存在带状瑕疵 几何体由三个变形平面组成,这些变形平面在启用以下着色器和添加混合的情况下绘制: float4 PlaneFP(V

我的3d应用程序在渲染到RGBA8渲染目标时会出现色带瑕疵。如何摆脱它们(而不必以更高的精度渲染到缓冲区)

更新

渲染过程基本上是:
1) 将几何体渲染为纹理
2) 应用全屏后处理步骤(对比度、亮度、饱和度、色调映射和gamma校正)

这里有两个屏幕截图,一个使用rgba8目标,另一个使用rgba16f目标。都是在禁用后处理步骤的情况下渲染的。如您所见,rgba8渲染中存在带状瑕疵

几何体由三个变形平面组成,这些变形平面在启用以下着色器和添加混合的情况下绘制:

float4 PlaneFP(VSOutput In) {
    float3 normal = normalize(In.WorldNormal);
    float3 eyeDirection = normalize(In.WorldPosition - scene.EyePosition.xyz);        
    float falloff = 1.0f - saturate(dot(normal, -eyeDirection));
    falloff = pow(falloff, 4.0f);        
    return float4(MaterialDiffuse * falloff, 1.0f);
}
如果启用后处理步骤,带状瑕疵会更加明显。
使用rgba16f时,带状消失,但我正在为PS3开发此应用程序,它无法处理带有浮点目标的MSAA。

如果您看到带状,那么在渲染管道中的某个点上,您的某个计算的精度没有您想象的那么高

例如,您可能有32位纹理、32位光源颜色等,但如果您对漫反射的计算在速度和位深度之间进行了权衡,那么您将看到沿漫射照明曲面的马赫带


你是否至少缩小了条纹的来源(通过一次切换到单独的光源,用漫反射颜色替换纹理,去除镜面反射等),根据你给我们的,几乎没有什么可以帮助的。一些屏幕截图至少会有一点帮助。

你能举个例子吗?这可能是因为你对此无能为力……你至少需要发布着色器和问题的屏幕截图,否则就无从得知。我已经用进一步的细节、屏幕截图和着色器代码更新了问题。这并不总是由某个地方的精度较低引起的;像色调映射或任何处理曲线和移动颜色的操作都很容易导致这些问题。即使是像布鲁姆这样的东西,如果高通做得不对,也可以同意。计算这些影响的精度会影响可能输出的范围。在任何情况下,在我们得到一些截图或示例代码之前,这都是猜测