您当前的位置: 首页 >  unity
  • 4浏览

    0关注

    193博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity画面像素化shader

我寄人间雪满头丶 发布时间:2021-06-28 00:37:36 ,浏览量:4

最终效果

使用shader前 在这里插入图片描述

使用shader后 在这里插入图片描述

代码

shader代码

Shader "Custom/Pixelate"
{
	Properties
	{
		_MainTex("Texture", 2D) = "white" {}
		_Columns("Pixel Columns",Float) = 64
		_Rows("Pixel Rows",Float) = 64

	}
		SubShader
		{
			// No culling or depth
			Cull Off ZWrite Off ZTest Always

			Pass
			{
				CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag

				#include "UnityCG.cginc"

				struct appdata
				{
					float4 vertex : POSITION;
					float2 uv : TEXCOORD0;
				};

				struct v2f
				{
					float2 uv : TEXCOORD0;
					float4 vertex : SV_POSITION;
				};

				v2f vert(appdata v)
				{
					v2f o;
					o.vertex = UnityObjectToClipPos(v.vertex);
					o.uv = v.uv;
					return o;
				}

				sampler2D _MainTex;
				float _Columns;
				float _Rows;

				fixed4 frag(v2f i) : SV_Target
				{
					float2 uv = i.uv;
					uv.x *= _Columns;
					uv.y *= _Rows;
					uv.x = round(uv.x);
					uv.y = round(uv.y);
					uv.x /= _Columns;
					uv.y /= _Rows;
					fixed4 col = tex2D(_MainTex, uv);
					return col;
				}
				ENDCG
			}
		}
}

C#控制代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[ExecuteInEditMode]
public class Pixelate : MonoBehaviour
{
    public Material effectMaterial;

    private void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        Graphics.Blit(source, destination, effectMaterial);
    }
}
使用步骤

1.创建shader脚本和C#控制脚本。 2.创建material并把shader拖拽上去。 3.将C#脚本挂到主相机上然后把material赋值给C#脚本。 在这里插入图片描述 4.通过调整如下参数调试显示效果,数值越小像素化越明显,反之则越精细。 在这里插入图片描述

原本地址

关注
打赏
1648518768
查看更多评论
立即登录/注册

微信扫码登录

0.2235s