うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】モザイク シェーダー

SizeXとSizeYを調整することで縦横のモザイクサイズを変更できます

上と左が0.5ずれているのを直したいが直し方が分からなかったため、いつか直します

f:id:hacchi_man:20200515003513p:plain:h300 f:id:hacchi_man:20200515003526p:plain:h300 f:id:hacchi_man:20200515003541p:plain:h300

Shader "Unlit/Pixelation"
{
    Properties
    {
        [NoScaleOffset] _MainTex ("Main Tex", 2D) = "white" {}
        _SizeX ("SizeX", float) = 1
        _SizeY ("SizeY", float) = 1
    }
    SubShader
    {
        Pass
        {
            CGPROGRAM
            #pragma vertex vert_img
            #pragma fragment frag
            
            #include "UnityCG.cginc"

            sampler2D _MainTex;
            float _SizeX;
            float _SizeY;

            fixed4 frag (v2f_img i) : SV_Target
            {
                float u = round(i.uv.x / (_SizeX / _ScreenParams.x)) * (_SizeX / _ScreenParams.x); 
                float v = round(i.uv.y / (_SizeY / _ScreenParams.y)) * (_SizeY / _ScreenParams.y); 
                return tex2D(_MainTex, float2(u, v));
            }
            ENDCG
        }
    }
}