Unity ShaderLab中的像素完美着色器

Fat*_*tie 12 shader pixel unity-game-engine

在Unity中,在编写着色器时,

是否有可能着色器本身"知道"屏幕分辨率是什么,实际上着色器控制单个物理像素?

我只考虑为"2D"对象编写着色器的情况(例如UI使用,或者在使用正射相机的任何事件中).

(当然,通常在屏幕上显示一个物理像素完美的PNG,你只需要一个400像素的PNG,你就可以安排缩放,以便着色器恰好可以绘制到400个物理像素.我想知道什么about是一个只绘制的着色器,例如物理像素完美的黑线 - 它必须"知道"物理像素的确切位置.)

为此获得赏金......

小智 6

有一个名为_ScreenParams的ShaderLab内置值.

_ScreenParams.x是屏幕宽度(以像素为单位)._ScreenParams.y是屏幕高度(以像素为单位).

这是文档页面:http://docs.unity3d.com/462/Documentation/Manual/SL-BuiltinValues.html


Mok*_*oki 5

我不认为这会发生.您的渲染与当前所选的视频模式相关联,甚至不必与您的物理屏幕尺寸相匹配(如果这是您完全按像素划分的意思).

如果您按照建议的分辨率为显示设备渲染并使用像素着色器遮蔽整个屏幕,则最接近此处的是此.这样,一个"物理像素"将大致等于一个实际渲染像素.除此之外,不可能将物理(即显示器)像素与渲染像素相关联.

当然,除非我以某种方式误解了你的意图.