着色器-CG/GLSL/HLSL如何实现抖动

着色器-CG/GLSL/HLSL如何实现抖动,glsl,shader,hlsl,sampling,cg,Glsl,Shader,Hlsl,Sampling,Cg,在计算机图形学中,为了避免可见的采样模式,对采样位置应用抖动是一种常见的技术 对片段着色器中的sampl位置应用抖动的正确方法是什么?我能想到的一种方法是将一个噪波纹理输入着色器,然后根据该噪波纹理的texlvalue改变想要采样的任何对象的采样位置 有更好的实现抖动的方法吗?各种硬件驱动程序AA方案通常已经基于抖动——每个供应商都有自己喜欢的模式。不幸的是,用户/玩家经常会弄乱设置,打开或关闭东西 这可能会让你觉得没有“正确”的方法——你是对的!有一些方法,其中一些对于某些任务是正确的。学习和

在计算机图形学中,为了避免可见的采样模式,对采样位置应用抖动是一种常见的技术

对片段着色器中的sampl位置应用抖动的正确方法是什么?我能想到的一种方法是将一个噪波纹理输入着色器,然后根据该噪波纹理的texlvalue改变想要采样的任何对象的采样位置


有更好的实现抖动的方法吗?

各种硬件驱动程序AA方案通常已经基于抖动——每个供应商都有自己喜欢的模式。不幸的是,用户/玩家经常会弄乱设置,打开或关闭东西

这可能会让你觉得没有“正确”的方法——你是对的!有一些方法,其中一些对于某些任务是正确的。学习和使用你喜欢的东西

对于表面纹理抖动,可以尝试以下操作:

在PS图象处理软件中,制作256x512 RGB图像(或256X511,对于英伟达DDS出口商的一些版本),将其全部填充随机噪声,保存为DDS,使用“现有MIP映射”。这将给您大致均匀的噪声,而不管纹理缩放的大小(至少通过许多有用的大小范围)。

  • 在着色器中,读取噪波纹理,然后将其应用于UV,然后读取其他纹理,例如

    float4 noise=tex2D(noiseSampler,OriginalUV)

    float2 newUV=原始aluv+一些小规模*(noise.xy-0.5)

    float4 jitteredColor=tex2D(颜色采样器,newUV)

  • 你喜欢什么样的变体就试试吧。请注意,强烈的纹理抖动可能会导致大量纹理缓存未命中,这可能会导致性能损失,请注意法线贴图,因为将高频分量引入到已过滤的信号中