- Home /
Anti-aliasing and flipping texture
I think I have ran across this issue here: http://docs.unity3d.com/Documentation/Components/SL-PlatformDifferences.html
As it explains, "However, if you're processing more than one RenderTexture together in your Image Effect, most likely they will come out at different vertical orientations (only in Direct3D, and only when anti-aliasing is used)". I don't know much about shaders, so this is a bit of a problem for me.
My scene has 3 cameras, the foreground, middleground, and background. The middleground is the one that is having an issue. As stated, I thought it was related to anti-aliasing, but I turned anti-aliasing off on all render quality settings, and the issue persisted. So, I messed with camera settings and realized that the Clear Flags setting in the middleground being set to "Don't Clear" is what is causing the issue. If I set it to "Skybox", the shader is rendered correctly. If I then turn on anti-aliasing, the issue appears again. I don't need anti-aliasing, but I need the middleground camera to have the "Don't Clear" flags settings or else we can't have the background.
Why does the Don't Clear setting cause the same issue as anti-aliasing? Does setting Don't clear automatically turn on anti-aliasing?
TL;DR I guess the real question is, since I am not well versed in Shaders yet, how do I take the code on the link provided:
// On D3D when AA is used, the main texture & scene depth texture
// will come out in different vertical orientations.
// So flip sampling of the texture when that is the case (main texture
// texel size will have negative Y).
#if SHADER_API_D3D9
if (_MainTex_TexelSize.y < 0)
uv.y = 1-uv.y;
#endif
and combine it with a shader like:
Shader "Hidden/Highlighted/Diffuse" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB)", 2D) = "white" {}
_Outline ("Outline", Color) = (1,1,1,1)
_InnerTint ("Inner Tint Value", Range (0, 1)) = 1
}
SubShader {
Tags { "RenderType"="Opaque" "RenderEffect"="Highlighted" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
fixed4 _Color;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
Fallback "VertexLit"
}
I have tried several things and it throws compile errors for one thing or another. I am trying to learn shaders now, but would appreciate a shortcut to the fix.
Thanks!
Your answer
Follow this Question
Related Questions
screen flipped upside down [image effect] 0 Answers
Am I flipping this shader or is it a GPU problem? 1 Answer
Is vertices.normals face- or vertex-normals? 1 Answer
Hiding parts of mesh but only on defined objects 0 Answers
Light Projection 1 Answer