在“统一”中,当写着色器时,
着色器本身是否有可能“知道”屏幕分辨率,以及着色器是否能够控制单个物理像素?
我只考虑为2D对象编写着色器的情况(例如UI使用,或者在任何情况下都使用正畸相机)。
(当然,通常要在屏幕上显示一个物理像素完美的PNG,你只需要一个400像素的PNG,你就会安排缩放,使着色器恰好绘制到400个物理像素。我想知道的是一个刚刚绘制的着色器,例如一条物理像素完美的黑线,它必须“知道”物理像素的确切位置。)
发布于 2016-01-29 02:20:48
有一个名为ShaderLab的内置值_ScreenParams。
_ScreenParams.x是以像素为单位的屏幕宽度。_ScreenParams.y是以像素为单位的屏幕高度。
以下是文档页面:http://docs.unity3d.com/462/Documentation/Manual/SL-BuiltinValues.html
发布于 2016-01-22 17:12:08
我不认为这会发生。您的渲染是与当前选定的视频模式,它甚至不需要匹配您的物理屏幕大小(如果这是您的意思是像素完美)。
与此最接近的是,如果您为显示设备呈现推荐的分辨率,并使用像素着色器对整个屏幕进行阴影处理。这样,一个‘物理像素’将大致等于一个实际呈现的像素。除此之外,不可能将物理(即显示的)像素与呈现的像素相关联。
当然,除非我误解了你的意图。
发布于 2016-01-22 22:42:35
着色器本身是否可能“知道”屏幕分辨率是什么?
我不这样认为。
对于着色器来说,控制单个物理像素呢?
是。像素着色器知道它们正在绘制的像素,也可以对其他像素进行采样。
https://stackoverflow.com/questions/34952184
复制相似问题