Making a pixelation shader to change resolutions in different areas of the screen
I'm working on a game that needs different resolutions for different objects. Characters and items at one resolution and the environment at another. It is a 3D game made to look like its 2D sprites, currently I'm using a render texture to reduce screen resolution and anti-aliasing turned off. This gives me the look i'm going for but the characters are tiny and need more detail.
I'm not trying to change the texture resolution, what I'm looking for here is 1 or 2 shaders that completely envelop the screen and everything behind them are set to the screen resolution of my choice dependent on the objects layer (or depth). I have looked everywhere for a solution and found a vertex fragment shader that is promising.
Here it is:
Shader "Custom\Pixelate" { Properties { _CellSize ("Cell Size", Vector) = (0.02, 0.02, 0, 0) } SubShader { Tags { "RenderType"="Opaque" "Queue" = "Transparent" } LOD 200
GrabPass { "_PixelationGrabTexture"}
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct v2f {
float4 pos : SV_POSITION;
float4 grabUV : TEXCOORD0;
};
float4 _CellSize;
v2f vert(appdata_base v) {
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
o.grabUV = ComputeGrabScreenPos(o.pos);
return o;
}
sampler2D _PixelationGrabTexture;
float4 frag(v2f IN) : COLOR
{
float2 steppedUV = IN.grabUV.xy/IN.grabUV.w;
steppedUV /= _CellSize.xy;
steppedUV = round(steppedUV);
steppedUV *= _CellSize.xy;
return tex2D(_PixelationGrabTexture, steppedUV);
}
ENDCG
}
}
}
There is a major problem that is keeping me from using it. When I change the screen resolution from free aspect the screenshot (that it takes once per frame and applies to the object) offsets or completely disappears leaving Unity's empty screen space color. Also it is harder on the eyes then the render texture, it bleeds more into other pixels causing strange low-resolution anti-aliasing effects.
Anyone? I have been searching the web for days now :/ I found some CRT shaders I'm going to try that might be enough for the character but I still need at least 2 different layers of screen resolution / pixelation in my game...
Your answer
Follow this Question
Related Questions
Should I use a shader or conventional code for displacement? 1 Answer
GrabPass for local distortion effect problem 0 Answers
Help for Kinect ar. 0 Answers
Resizing a RenderTexture for PixelPerfectCam 0 Answers
Letterboxing issues 0 Answers