x


Pixelartifacts on edges when activating Antialiasing...

Hi,

ive already sent a bug report to unity but unfortunately ive no response yet. I get artifacts when activating AA in my scene (editorview, webplayer, standalone).

Theres a mesh with a reflective/specular shader with a cubemap and i get this white pixels on pc and mac, too. (latest display driver, different machines).

Does anybody have the same problems? Any ideas on that? Would be great. Thanks a lot.

alt text

more ▼

asked Dec 14 '10 at 08:27 AM

yosh gravatar image

yosh
901 73 81 94

I also get these annoying artifacts. Would be nice to see this one solved!

Dec 14 '10 at 01:50 PM Helix

Would love to have someone from Unity weigh in on this.

Dec 14 '10 at 03:49 PM tingham

If you were to use another shader, would the white glitches be removed? Is that black border running behind the reflective material? Would it help if it did? (I'm thinking the AA might cause a small gap between the black frame and your reflective shader)

Dec 16 '10 at 02:01 PM Statement ♦♦

I can make this happen with a non reflective specular shader as well. Right on the border between edges of same object. Both black and white, seems to go to nearest polar of white or black.

Dec 17 '10 at 03:27 PM dissidently

I got this too, didn't knew it's only with combination of AA and specular

Feb 18 '11 at 12:52 PM Steven 1
(comments are locked)
10|3000 characters needed characters left

4 answers: sort voted first

The built-in specular shader is the culprit. To remove the white artifacts, add `o.Normal = fixed3(0,0,1);` after `o.Specular = _Shininess;` in the `surf` function from the built-in specular shader. This line is omitted due to performance reasons apparently. (discussions here and here)

The shader code below is for plain ol' Specular, from the "Normal-Glossy.shader" file from http://unity3d.com/support/resources/assets/built-in-shaders.html, but with the added fix:

Shader "Specular (Fixed)" {
Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
    _Shininess ("Shininess", Range (0.01, 1)) = 0.078125
    _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}
}

SubShader {
    Tags { "RenderType"="Opaque" }
    LOD 300

CGPROGRAM
#pragma surface surf BlinnPhong

sampler2D _MainTex;
fixed4 _Color;
half _Shininess;

struct Input {
    float2 uv_MainTex;
};

void surf (Input IN, inout SurfaceOutput o) {
    fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
    o.Albedo = tex.rgb * _Color.rgb;
    o.Gloss = tex.a;
    o.Alpha = tex.a * _Color.a;
    o.Specular = _Shininess;
    o.Normal = fixed3(0,0,1);
}
ENDCG
}

Fallback "VertexLit"
}

As for the Reflective/Specular shader, adding `o.Normal = fixed3(0,0,1);` gives a compiler error.

It's also been suggested to use Bumped Specular (maybe with Reflective too?) with a flat normalmap to fix the white artifacts.

more ▼

answered Aug 21 '12 at 08:18 AM

-chris gravatar image

-chris
36 1 1

If you have to add a "rule" to the shader, I can't agree the culprit is the shader. That, to me, says you can fix the problem in the shader and it's probably the easier place to fix it for us - mortal unity developers. Having said that, I tried both suggestions and both work great! Hope this answer gets accepted eventually. :-)

Aug 21 '12 at 02:20 PM Cawas

Actually, I noticed now, only the second suggestion (about using Bumped Specular) worked great. The first (and main one, on modifying the shader) one seem to work at first, but later I can notice the hack and the artifacts are still there. So, not so good.

Aug 21 '12 at 06:57 PM Cawas
(comments are locked)
10|3000 characters needed characters left

For imported Models, i was able to minnimize artifacts by tweaking the smoothing angle in the importsettings.

more ▼

answered Oct 19 '12 at 02:57 PM

marsian gravatar image

marsian
1 1

(comments are locked)
10|3000 characters needed characters left

I can't reproduce this. Maybe it has been resolved... Even though I couldn't find any mention about this on the release notes since 2.6, except for a brief worrying on 3.2.

Or, most likely, it's an artifact from your specific scene set up, generated because our current algorithms just can't handle everything, specially under OpenGL ES 2.0, like Mr Statement grasped on the comments.

more ▼

answered Apr 11 '12 at 02:03 PM

Cawas gravatar image

Cawas
1.3k 31 38 54

Unfortunately it still happens (as we speak). The specific scene set up being a character mesh with a Specular shader, a directional light and a regular camera. See http://orion5.net/images/white_pixel_artifact.png for an example. It's embarassing to show to people. Custom shaders from 3rd parties (e.g. skin shaders and the like) seem to solve it, so it's definitely the shader and it's definitely anti-aliasing (turning it off will remove the artifacts).

Apr 12 '12 at 09:41 AM Orion 1

@Orion complex problems are usually a combination of many things and then removing 1 factor that triggers it may seem to resolve. But thanks for the hint, at least I can reproduce it now...

Aug 21 '12 at 01:49 PM Cawas
(comments are locked)
10|3000 characters needed characters left
more ▼

answered Mar 29 '11 at 08:22 PM

synapsemassage gravatar image

synapsemassage
441 2 5 17

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x510
x492
x129
x47

asked: Dec 14 '10 at 08:27 AM

Seen: 2452 times

Last Updated: Oct 19 '12 at 02:57 PM