Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Bondjp · Oct 22, 2016 at 06:23 PM · androidshaderpink

Shader not working, gameobject pink on Android. Fine on Editor

Been at it the whole day and I still can't figure it out why it doesn't work on android but it's working in the editor. I've included the shader in ProjectSettings->Graphics

This is the error I'm getting: "Shader error in 'Sprites/Outline': '[' : syntax error syntax error at line 96 (on gles)".

Line 96 has this [unroll(16)] ->Max outline size is 16px

Here's my shader:

[CODE]

  Shader "Sprites/Outline"
 {
 Properties
 {
     [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
 _Color("Tint", Color) = (1,1,1,1)
     [MaterialToggle] PixelSnap("Pixel snap", Float) = 0

     // Add values to determine if outlining is enabled and outline color.
     [PerRendererData] _Outline("Outline", Float) = 0
     [PerRendererData] _OutlineColor("Outline Color", Color) = (1,1,1,1)
     [PerRendererData] _OutlineSize("Outline Size", int) = 1
 }

     SubShader
 {
     Tags
 {
     "Queue" = "Transparent"
     "IgnoreProjector" = "True"
     "RenderType" = "Transparent"
     "PreviewType" = "Plane"
     "CanUseSpriteAtlas" = "True"
 }

     Cull Off
     Lighting Off
     ZWrite Off
     Blend One OneMinusSrcAlpha

     Pass
 {
     CGPROGRAM
       #pragma vertex vert
       #pragma fragment frag
       #pragma multi_compile _ PIXELSNAP_ON
       #pragma shader_feature ETC1_EXTERNAL_ALPHA
       #include "UnityCG.cginc"

 struct appdata_t
 {
     float4 vertex   : POSITION;
     float4 color    : COLOR;
     float2 texcoord : TEXCOORD0;
 };

 struct v2f
 {
     float4 vertex   : SV_POSITION;
     fixed4 color : COLOR;
     float2 texcoord  : TEXCOORD0;
 };

 fixed4 _Color;
 float _Outline;
 fixed4 _OutlineColor;
 int _OutlineSize;

 v2f vert(appdata_t IN)
 {
     v2f OUT;
     OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex);
     OUT.texcoord = IN.texcoord;
     OUT.color = IN.color * _Color;
       #ifdef PIXELSNAP_ON
     OUT.vertex = UnityPixelSnap(OUT.vertex);
       #endif

     return OUT;
 }

 sampler2D _MainTex;
 sampler2D _AlphaTex;
 float4 _MainTex_TexelSize;

 fixed4 SampleSpriteTexture(float2 uv)
 {
     fixed4 color = tex2D(_MainTex, uv);

       #if ETC1_EXTERNAL_ALPHA
     // get the color from an external texture (usecase: Alpha support for ETC1 on android)
     color.a = tex2D(_AlphaTex, uv).r;
       #endif //ETC1_EXTERNAL_ALPHA

     return color;
 }

 fixed4 frag(v2f IN) : SV_Target
 {
     fixed4 c = SampleSpriteTexture(IN.texcoord) * IN.color;

 // If outline is enabled and there is a pixel, try to draw an outline.
 if (_Outline > 0 && c.a != 0) {
     float totalAlpha = 1.0;

     [unroll(16)]  <-- Error here...
     for (int i = 1; i < _OutlineSize + 1; i++) {
         fixed4 pixelUp = tex2D(_MainTex, IN.texcoord + fixed2(0, i * _MainTex_TexelSize.y));
         fixed4 pixelDown = tex2D(_MainTex, IN.texcoord - fixed2(0,i *  _MainTex_TexelSize.y));
         fixed4 pixelRight = tex2D(_MainTex, IN.texcoord + fixed2(i * _MainTex_TexelSize.x, 0));
         fixed4 pixelLeft = tex2D(_MainTex, IN.texcoord - fixed2(i * _MainTex_TexelSize.x, 0));

         totalAlpha = totalAlpha * pixelUp.a * pixelDown.a * pixelRight.a * pixelLeft.a;
     }

     if (totalAlpha == 0) {
         c.rgba = fixed4(1, 1, 1, 1) * _OutlineColor;
     }
 }

 c.rgb *= c.a;

 return c;
 }
     ENDCG
 }
 }
 }

  

Can someone please take a look at this and help me figure it out what's wrong? Thanks.

Comment
Add comment · Show 4
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image tanoshimi · Oct 22, 2016 at 06:26 PM 0
Share

Have you tried removing that directive and letting the compiler decide to unroll the loop automatically? Have you tried setting a smaller _OutlineSize ?

avatar image Bondjp tanoshimi · Oct 22, 2016 at 06:34 PM 0
Share

Hi, If II remove it, I get the following error and it stops working in the editor:

"unable to unroll loop, loop does not appear to ter$$anonymous$$ate in a timely manner (1024 iterations) Compiling Fragment program Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING"

Right now I'm using 8 for _OutlineSize

avatar image tanoshimi Bondjp · Oct 22, 2016 at 06:38 PM 0
Share

That's 32 texture lookups for every pixel rendered by the fragment shader....! What if you use, say 2, for outline size?

avatar image Bondjp · Oct 22, 2016 at 06:55 PM 0
Share

Still getting an error:

"unable to unroll loop, loop does not appear to ter$$anonymous$$ate in a timely manner (1024 iterations) Compiling Vertex program Platform defines: UNITY_NO_DXT5nm UNITY_NO_RGB$$anonymous$$ UNITY_NO_SCREENSPACE_SHADOWS UNITY_NO_LINEAR_COLORSPACE UNITY_ENABLE_REFLECTION_BUFFERS UNITY_FRA$$anonymous$$EBUFFER_FETCH_AVAILABLE UNITY_PBS_USE_BRDF2 SHADER_API_$$anonymous$$OBILE UNITY_HARDWARE_TIER2"

Also forgot to add this warning:

"gradient instruction used in a loop with varying iteration, forcing loop to unroll Compiling Vertex program Platform defines: UNITY_NO_DXT5nm UNITY_NO_RGB$$anonymous$$ UNITY_NO_SCREENSPACE_SHADOWS UNITY_NO_LINEAR_COLORSPACE UNITY_ENABLE_REFLECTION_BUFFERS UNITY_FRA$$anonymous$$EBUFFER_FETCH_AVAILABLE UNITY_PBS_USE_BRDF2 SHADER_API_$$anonymous$$OBILE UNITY_HARDWARE_TIER2"

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by code-and-design-inc · Feb 23, 2018 at 02:19 AM

You should try it.

add code

pragma target 4.0

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

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

Answers Answers and Comments

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Shader From Assetbundle Compiled On PC with Target of Android Platform Turn Pink 0 Answers

Pink custom shader on Android build 0 Answers

Unity Terrain texture issue on android device 1 Answer

Shader not working correctly on android 1 Answer

This shader (or Image Effect) is not working on Android 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges