URP管线下使用Dither做像素化风格

什么是Dither

基本概念

  • v. 犹豫不决;对(录音)进行噪声处理;抖色
  • n. 犹豫不决;紧张,颤抖

 

 

用有限的颜色来表示出多种色阶变化的技术就叫做Dither

上面那句话其实并不严谨,只是在此方便理解,Dither不是新型技术,它在视频,信号处理,音频等领域都有应用

图形中的应用

基于上述的简单且并不严谨的描述,下图是在一个2x2的像素格中,从左到右依次排列出一个黑白色阶的效果

对应黑白色阶

没看出来?我们将像素格缩小平铺

这下就对味了!

现在我们对Dither在图形上的应用已经有了初步的了解,并且我们可以看得到,2x2的像素格只有5种颜色过渡,那么4x4呢?

  • 2x2像素格有5种颜色
  • 4x4像素格有17种颜色
  • 8x8像素格有65种颜色

有序抖动与无序抖动

这里我们不涉及更深的底层逻辑,直观一些,直接看图

这张图展示了不同算法呈现出的结果,其中下面

这张,就是有序Dither的效果,也是我们下面要实现的效果(有点像素画的感觉哈)

Dither的实现

这里我们的主要目标是先绘制一个2x2像素格的矩阵,然后再想办法将这些像素格填充平铺到屏幕中去

有了目标,下面我们开干!

像素格矩阵

首先我们想要绘制下面这样一个2x2的像素格,对应的矩阵应该是什么样的?

显而易见

\begin{pmatrix}0&1\\1&0\\ \end{pmatrix}

平铺到屏幕中

方法其实很简单,只需要将上面那个2x2矩阵作为一个贴图一样目标,再用0,1,0,1,0,1不断重复的坐标值采样它就行了

说起来有点抽象,首先我们先看采样它的值从哪来

i.positionCS.xy

没错,就是它,我们知道裁剪空间下的坐标值,从顶点着色器输出到片段着色器后,它的值就是屏幕上每一个像素的值

且值非常大,不是简单的0-1,而且我们的矩阵只能取到0和1,即0行0列、0行1列.....所以必须将这些值映射为0和1,只需要除以2取余即可

直接输出

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Unity中使用Universal Render Pipeline(URP管线,请按照以下步骤操作: 1. 创建一个新项目或打开现有项目。 2. 在Unity的Package Manager中,找到Universal RP并安装它。 3. 在Project视图中创建一个新的URP Asset资源。此资源包含了所有URP管线的设置,包括渲染设置、光照设置和材质设置。 4. 在Project视图中创建一个新的Material资源。将其渲染模式设置为使用URP管线,并将其属性调整为您所需的外观。 5. 在Scene视图中创建一个新的GameObject并将其添加到场景中。将该GameObject的Renderer组件的材质设置为您刚刚创建的Material资源。 6. 在Project视图中创建一个新的Light资源。将其类型设置为Directional,并将其属性调整为您所需的光照效果。 7. 在Scene视图中将该Light资源添加到场景中。 8. 在Project视图中创建一个新的Camera资源。将其属性调整为您所需的摄像机设置。 9. 在Scene视图中将该Camera资源添加到场景中。 10. 在Project视图中创建一个新的Post-processing Profile资源。此资源包含了所有后期处理效果的设置。 11. 在Scene视图中将该Post-processing Profile资源添加到您的Camera组件的Post-processing Settings中。 12. 在Unity的菜单栏中选择Window > Rendering > Lighting Settings。在其中,将Scene视图中的Environment Lighting属性设置为使用Skybox,并将其Skybox属性设置为您所需的天空盒材质。 13. 最后,按下Play按钮,您将看到使用URP管线的场景开始渲染。 这些步骤将为您提供使用URP管线的基础知识。根据您的需求,您可以使用URP管线的其他功能和设置来进一步优您的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值