{"id":1235,"date":"2012-10-16T01:42:50","date_gmt":"2012-10-15T22:42:50","guid":{"rendered":"http:\/\/unitycoder.com\/blog\/?p=1235"},"modified":"2013-08-03T16:24:05","modified_gmt":"2013-08-03T13:24:05","slug":"fake-glow-effect-shader","status":"publish","type":"post","link":"https:\/\/unitycoder.com\/blog\/2012\/10\/16\/fake-glow-effect-shader\/","title":{"rendered":"Fake Glow Effect Shader"},"content":{"rendered":"<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1236\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2012\/10\/16\/fake-glow-effect-shader\/fake_glow_unity_indie\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/10\/fake_glow_unity_indie.jpg?fit=680%2C355&amp;ssl=1\" data-orig-size=\"680,355\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"fake_glow_unity_indie\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/10\/fake_glow_unity_indie.jpg?fit=680%2C355&amp;ssl=1\" class=\"alignnone size-full wp-image-1236\" title=\"fake_glow_unity_indie\" alt=\"\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/10\/fake_glow_unity_indie.jpg?resize=680%2C355\" width=\"680\" height=\"355\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/10\/fake_glow_unity_indie.jpg?w=680&amp;ssl=1 680w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/10\/fake_glow_unity_indie.jpg?resize=300%2C156&amp;ssl=1 300w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/p>\n<p>Interesting fake glow shader for unity indie (its based on unity builtin shaders).<br \/>\n(Right image has some linear fog enabled)<\/p>\n<p><strong>Features:<\/strong><br \/>\n&#8211; Adjustable glow range, glow color, glow alpha<br \/>\n&#8211; Only works well on spheres..<\/p>\n<p><strong>Problems:<\/strong><br \/>\n&#8211; Currently it only works when viewed from a certain axis direction..<br \/>\n&#8211; Not affected by lights yet..<\/p>\n<p><strong>Webplayer:<\/strong><br \/>\ncoming later..<\/p>\n<p><strong>Download source:<\/strong><br \/>\ncoming later..<\/p>\n<p>*Earth map by NASA: <a title=\"http:\/\/eoimages.gsfc.nasa.gov\/images\/imagerecords\/57000\/57752\/land_shallow_topo_2048.jpg\" href=\"http:\/\/eoimages.gsfc.nasa.gov\/images\/imagerecords\/57000\/57752\/land_shallow_topo_2048.jpg\" target=\"_blank\">http:\/\/eoimages.gsfc.nasa.gov\/images\/imagerecords\/57000\/57752\/land_shallow_topo_2048.jpg<\/a><\/p>\n<p>&#8212;<\/p>\n<p>Image#2: Bigger glow (planet texture from: <a title=\"http:\/\/commons.wikimedia.org\/wiki\/File:Libya_Montes.jpg\" href=\"http:\/\/commons.wikimedia.org\/wiki\/File:Libya_Montes.jpg\" target=\"_blank\">http:\/\/commons.wikimedia.org\/wiki\/File:Libya_Montes.jpg<\/a> )<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1242\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2012\/10\/16\/fake-glow-effect-shader\/fake_glow_unity_indie_2-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/10\/fake_glow_unity_indie_21.jpg?fit=680%2C480&amp;ssl=1\" data-orig-size=\"680,480\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"fake_glow_unity_indie_2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/10\/fake_glow_unity_indie_21.jpg?fit=680%2C480&amp;ssl=1\" class=\"alignnone size-full wp-image-1242\" title=\"fake_glow_unity_indie_2\" alt=\"\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/10\/fake_glow_unity_indie_21.jpg?resize=680%2C480\" width=\"680\" height=\"480\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/10\/fake_glow_unity_indie_21.jpg?w=680&amp;ssl=1 680w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/10\/fake_glow_unity_indie_21.jpg?resize=300%2C211&amp;ssl=1 300w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/p>\n<p>&#8212;<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\r\nShader &quot;UnityCoder\/GradientGlow2&quot; {\r\nProperties {\r\n_Color (&quot;Main Color&quot;, Color) = (.5,.5,.5,1)\r\n_OutlineColor (&quot;Outline Color&quot;, Color) = (0,0,0,1)\r\n\/\/_Outline (&quot;Outline width&quot;, Range (.002, 0.03)) = .005\r\n_Outline (&quot;Outline width&quot;, Range (.002, 0.5)) = .005\r\n_MainTex (&quot;Base (RGB)&quot;, 2D) = &quot;white&quot; { }\r\n\/\/\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0_ToonShade (&quot;ToonShader Cubemap(RGB)&quot;, CUBE) = &quot;&quot; { Texgen CubeNormal }\r\n}\r\n\r\nCGINCLUDE\r\n\/\/ Upgrade NOTE: excluded shader from DX11 and Xbox360; has structs without semantics (struct v2f members vpos)\r\n#pragma exclude_renderers d3d11 xbox360\r\n\/\/ Upgrade NOTE: excluded shader from Xbox360; has structs without semantics (struct v2f members vpos)\r\n#pragma exclude_renderers xbox360\r\n#include &quot;UnityCG.cginc&quot;\r\n\r\nstruct appdata {\r\nfloat4 vertex : POSITION;\r\nfloat3 normal : NORMAL;\r\n};\r\n\r\nstruct v2f {\r\nfloat4 pos : POSITION;\r\nfloat3 vpos;\r\nfloat4 color : COLOR;\r\n};\r\n\r\nuniform float _Outline;\r\nuniform float4 _OutlineColor;\r\n\r\nv2f vert(appdata v) {\r\nv2f o;\r\no.pos = mul(UNITY_MATRIX_MVP, v.vertex);\r\n\r\nfloat3 norm\u00a0\u00a0 = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal);\r\nfloat2 offset = TransformViewToProjection(norm.xy);\r\n\r\no.pos.xy += offset * o.pos.z * _Outline;\r\n\/\/\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0o.pos.xyz += v.normal*_Outline;\r\no.vpos = v.vertex.xyz;\r\no.color = _OutlineColor;\r\nreturn o;\r\n}\r\nENDCG\r\n\r\n\r\n\r\nSubShader {\r\nTags { &quot;RenderType&quot;=&quot;Opaque&quot; }\r\n\/\/Tags { &quot;RenderType&quot;=&quot;Transparent&quot; }\r\n\r\n\/\/ you can replace this pass with something else (rendering the globe)\r\nUsePass &quot;UnityCoder\/DefaultDiffuse2\/BASE&quot;\r\n\r\n\r\nPass {\r\nName &quot;OUTLINE&quot;\r\nTags { &quot;LightMode&quot; = &quot;Always&quot; }\r\nCull Front\r\nZWrite On\r\nColorMask RGB\r\nBlend SrcAlpha OneMinusSrcAlpha\r\n\r\nCGPROGRAM\r\n#pragma vertex vert\r\n#pragma fragment frag\r\n\r\nhalf4 frag(v2f i) :COLOR\r\n{\r\nfloat3 gradientCenter = float3(0,0,0);\r\nfloat3 pos = normalize(i.vpos.xyz-gradientCenter.xyz);\r\nfloat4 c =\u00a0 float4(i.color.rgb,pos.z*i.color.a);\r\nreturn c;\r\n\r\n\r\n}\r\nENDCG\r\n}\r\n}\r\nFallback &quot;Toon\/Basic&quot;\r\n}\r\n\r\n<\/pre>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\r\nShader &quot;UnityCoder\/DefaultDiffuse2&quot; {\r\nProperties {\r\n_Color (&quot;Main Color&quot;, Color) = (.5,.5,.5,1)\r\n_MainTex (&quot;Base (RGB)&quot;, 2D) = &quot;white&quot; {}\r\n\/\/_ToonShade (&quot;ToonShader Cubemap(RGB)&quot;, CUBE) = &quot;&quot; { Texgen CubeNormal }\r\n}\r\n\r\n\r\nSubShader {\r\nTags { &quot;RenderType&quot;=&quot;Opaque&quot; }\r\nPass {\r\nName &quot;BASE&quot;\r\nCull Off\r\n\r\nCGPROGRAM\r\n#pragma vertex vert\r\n#pragma fragment frag\r\n#pragma fragmentoption ARB_precision_hint_fastest\r\n#include &quot;UnityCG.cginc&quot;\r\n\r\nsampler2D _MainTex;\r\n\/\/\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0samplerCUBE _ToonShade;\r\nfloat4 _MainTex_ST;\r\nfloat4 _Color;\r\n\r\nstruct appdata {\r\nfloat4 vertex : POSITION;\r\nfloat2 texcoord : TEXCOORD0;\r\nfloat3 normal : NORMAL;\r\n};\r\n\r\nstruct v2f {\r\nfloat4 pos : POSITION;\r\nfloat2 texcoord : TEXCOORD0;\r\n\/\/\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0float3 cubenormal : TEXCOORD1;\r\n};\r\n\r\nv2f vert (appdata v)\r\n{\r\nv2f o;\r\no.pos = mul (UNITY_MATRIX_MVP, v.vertex);\r\no.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);\r\n\/\/\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0o.cubenormal = mul (UNITY_MATRIX_MV, float4(v.normal,0));\r\nreturn o;\r\n}\r\n\r\nfloat4 frag (v2f i) : COLOR\r\n{\r\nfloat4 col = _Color * tex2D(_MainTex, i.texcoord);\r\n\/\/\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0float4 cube = texCUBE(_ToonShade, i.cubenormal);\r\n\/\/\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return float4(2.0f * cube.rgb * col.rgb, col.a);\r\nreturn float4(col.rgb, col.a);\r\n}\r\nENDCG\r\n}\r\n}\r\n\r\n\r\nFallback &quot;VertexLit&quot;\r\n}\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Interesting fake glow shader for unity indie (its based on unity builtin shaders). (Right image has some linear fog enabled) Features: &#8211; Adjustable glow range, glow color, glow alpha &#8211; Only works well on spheres.. Problems: &#8211; Currently it only works when viewed from a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1236,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[4,3],"tags":[336,335,154,204,205,14,334],"class_list":["post-1235","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-demos","category-unity3d","tag-atmosphere","tag-earth","tag-free","tag-glow","tag-indie","tag-shader","tag-shine"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/10\/fake_glow_unity_indie.jpg?fit=680%2C355&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p1KTaT-jV","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/1235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/comments?post=1235"}],"version-history":[{"count":8,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/1235\/revisions"}],"predecessor-version":[{"id":2115,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/1235\/revisions\/2115"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media\/1236"}],"wp:attachment":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media?parent=1235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/categories?post=1235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/tags?post=1235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}