Advertisement
Guest User

shader forge shader bug

a guest
Apr 10th, 2014
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.86 KB | None | 0 0
  1. // Shader created with Shader Forge Beta 0.31
  2. // Shader Forge (c) Joachim Holmer - http://www.acegikmo.com/shaderforge/
  3. // Note: Manually altering this data may prevent you from opening it in Shader Forge
  4. /*SF_DATA;ver:0.31;sub:START;pass:START;ps:flbk:Bumped Specular,lico:1,lgpr:1,nrmq:1,limd:1,uamb:True,mssp:True,lmpd:False,lprd:False,enco:False,frtr:True,vitr:True,dbil:False,rmgx:True,hqsc:True,hqlp:False,blpr:0,bsrc:0,bdst:0,culm:0,dpts:2,wrdp:True,ufog:True,aust:True,igpj:False,qofs:0,qpre:1,rntp:1,fgom:False,fgoc:False,fgod:False,fgor:False,fgmd:0,fgcr:0.3142246,fgcg:0.3759843,fgcb:0.4486077,fgca:1,fgde:0.0015,fgrn:300,fgrf:1000,ofsf:0,ofsu:0,f2p0:False;n:type:ShaderForge.SFN_Final,id:1,x:32701,y:32804|diff-505-OUT,spec-420-OUT,gloss-69-OUT,normal-1016-OUT,emission-1007-OUT;n:type:ShaderForge.SFN_Tex2d,id:2,x:33744,y:32084,ptlb:Colour Map,ptin:_ColourMap,ntxv:0,isnm:False;n:type:ShaderForge.SFN_Tex2d,id:9,x:33742,y:32860,ptlb:Normal Map,ptin:_NormalMap,ntxv:3,isnm:True;n:type:ShaderForge.SFN_ValueProperty,id:69,x:33092,y:32793,ptlb:Gloss Range,ptin:_GlossRange,glob:False,v1:1;n:type:ShaderForge.SFN_Tex2d,id:145,x:34396,y:33153,ptlb:Detail Normal Map,ptin:_DetailNormalMap,ntxv:0,isnm:False;n:type:ShaderForge.SFN_NormalBlend,id:148,x:33550,y:32849|BSE-9-RGB,DTL-172-OUT;n:type:ShaderForge.SFN_Lerp,id:172,x:33955,y:33132,cmnt:Detail Normal |A-175-OUT,B-1176-OUT,T-177-OUT;n:type:ShaderForge.SFN_Vector3,id:175,x:34376,y:33036,v1:0,v2:0,v3:1;n:type:ShaderForge.SFN_Slider,id:177,x:34165,y:33343,ptlb:Normal Blend Weight,ptin:_NormalBlendWeight,min:0,cur:0,max:1;n:type:ShaderForge.SFN_Multiply,id:420,x:33191,y:32533,cmnt:Specular |A-1091-OUT,B-2-G,C-447-OUT;n:type:ShaderForge.SFN_Slider,id:447,x:33360,y:32569,ptlb:Specular Intensity,ptin:_SpecularIntensity,min:0,cur:0,max:1;n:type:ShaderForge.SFN_Lerp,id:505,x:33093,y:32003|A-1028-OUT,B-1306-RGB,T-533-OUT;n:type:ShaderForge.SFN_Slider,id:533,x:33320,y:32259,ptlb:Blend Texture Weight,ptin:_BlendTextureWeight,min:0,cur:0,max:1;n:type:ShaderForge.SFN_Multiply,id:545,x:33210,y:33298|A-547-OUT,B-801-OUT;n:type:ShaderForge.SFN_Fresnel,id:547,x:33370,y:33240|NRM-552-OUT,EXP-977-OUT;n:type:ShaderForge.SFN_NormalVector,id:552,x:33544,y:33230,pt:True;n:type:ShaderForge.SFN_Power,id:557,x:33544,y:33499|VAL-571-RGB,EXP-836-OUT;n:type:ShaderForge.SFN_Color,id:571,x:33736,y:33499,ptlb:Fresnel Colour,ptin:_FresnelColour,glob:False,c1:0.5,c2:0.5,c3:0.5,c4:1;n:type:ShaderForge.SFN_ValueProperty,id:626,x:33544,y:33445,ptlb:Fresnel Value,ptin:_FresnelValue,glob:False,v1:0;n:type:ShaderForge.SFN_Multiply,id:801,x:33370,y:33371|A-626-OUT,B-557-OUT;n:type:ShaderForge.SFN_Vector1,id:836,x:33736,y:33642,v1:2;n:type:ShaderForge.SFN_Vector1,id:977,x:33544,y:33371,v1:5;n:type:ShaderForge.SFN_Multiply,id:1007,x:33021,y:33170,cmnt:Fresnel effect|A-2-R,B-545-OUT;n:type:ShaderForge.SFN_Normalize,id:1016,x:33376,y:32849,cmnt:Normal Map|IN-148-OUT;n:type:ShaderForge.SFN_Multiply,id:1028,x:33332,y:31892,cmnt:Colour map and Blend Map|A-2-RGB,B-1031-OUT;n:type:ShaderForge.SFN_Lerp,id:1031,x:33544,y:31924|A-1041-OUT,B-2-A,T-1037-OUT;n:type:ShaderForge.SFN_Slider,id:1037,x:33761,y:31982,ptlb:AO Strength,ptin:_AOStrength,min:0,cur:0.5,max:1;n:type:ShaderForge.SFN_Vector3,id:1041,x:33761,y:31880,v1:1,v2:1,v3:1;n:type:ShaderForge.SFN_Blend,id:1091,x:33652,y:32525,blmd:1,clmp:True|SRC-2-R,DST-145-A;n:type:ShaderForge.SFN_RemapRange,id:1176,x:34165,y:33153,frmn:0,frmx:1,tomn:-1,tomx:1|IN-145-RGB;n:type:ShaderForge.SFN_Tex2d,id:1306,x:33320,y:32051,ptlb:Blend Texture Map,ptin:_BlendTextureMap,ntxv:0,isnm:False;proporder:2-1037-1306-533-447-69-9-177-571-626-145-476;pass:END;sub:END;*/
  5.  
  6. Shader "Shader Forge/EnvironmentRocks" {
  7. Properties {
  8. _ColourMap ("Colour Map", 2D) = "white" {}
  9. _AOStrength ("AO Strength", Range(0, 1)) = 0.5
  10. _BlendTextureMap ("Blend Texture Map", 2D) = "white" {}
  11. _BlendTextureWeight ("Blend Texture Weight", Range(0, 1)) = 0
  12. _SpecularIntensity ("Specular Intensity", Range(0, 1)) = 0
  13. _GlossRange ("Gloss Range", Float ) = 1
  14. _NormalMap ("Normal Map", 2D) = "bump" {}
  15. _NormalBlendWeight ("Normal Blend Weight", Range(0, 1)) = 0
  16. _FresnelColour ("Fresnel Colour", Color) = (0.5,0.5,0.5,1)
  17. _FresnelValue ("Fresnel Value", Float ) = 0
  18. _DetailNormalMap ("Detail Normal Map", 2D) = "white" {}
  19. _BlendTexture ("Blend Texture", 2D) = "white" {}
  20. }
  21. SubShader {
  22. Tags {
  23. "RenderType"="Opaque"
  24. }
  25. Pass {
  26. Name "ForwardBase"
  27. Tags {
  28. "LightMode"="ForwardBase"
  29. }
  30.  
  31.  
  32. CGPROGRAM
  33. #pragma vertex vert
  34. #pragma fragment frag
  35. #define UNITY_PASS_FORWARDBASE
  36. #include "UnityCG.cginc"
  37. #include "AutoLight.cginc"
  38. #pragma multi_compile_fwdbase_fullshadows
  39. #pragma exclude_renderers xbox360 ps3 flash d3d11_9x
  40. #pragma target 3.0
  41. uniform float4 _LightColor0;
  42. uniform sampler2D _ColourMap; uniform float4 _ColourMap_ST;
  43. uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
  44. uniform float _GlossRange;
  45. uniform sampler2D _DetailNormalMap; uniform float4 _DetailNormalMap_ST;
  46. uniform float _NormalBlendWeight;
  47. uniform float _SpecularIntensity;
  48. uniform float _BlendTextureWeight;
  49. uniform float4 _FresnelColour;
  50. uniform float _FresnelValue;
  51. uniform float _AOStrength;
  52. uniform sampler2D _BlendTextureMap; uniform float4 _BlendTextureMap_ST;
  53. struct VertexInput {
  54. float4 vertex : POSITION;
  55. float3 normal : NORMAL;
  56. float4 tangent : TANGENT;
  57. float4 uv0 : TEXCOORD0;
  58. };
  59. struct VertexOutput {
  60. float4 pos : SV_POSITION;
  61. float4 uv0 : TEXCOORD0;
  62. float4 posWorld : TEXCOORD1;
  63. float3 normalDir : TEXCOORD2;
  64. float3 tangentDir : TEXCOORD3;
  65. float3 binormalDir : TEXCOORD4;
  66. LIGHTING_COORDS(5,6)
  67. };
  68. VertexOutput vert (VertexInput v) {
  69. VertexOutput o;
  70. o.uv0 = v.uv0;
  71. o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
  72. o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
  73. o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
  74. o.posWorld = mul(_Object2World, v.vertex);
  75. o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
  76. TRANSFER_VERTEX_TO_FRAGMENT(o)
  77. return o;
  78. }
  79. fixed4 frag(VertexOutput i) : COLOR {
  80. i.normalDir = normalize(i.normalDir);
  81. float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
  82. float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
  83. /////// Normals:
  84. float2 node_1339 = i.uv0;
  85. float4 node_145 = tex2D(_DetailNormalMap,TRANSFORM_TEX(node_1339.rg, _DetailNormalMap));
  86. float3 node_148_nrm_base = UnpackNormal(tex2D(_NormalMap,TRANSFORM_TEX(node_1339.rg, _NormalMap))).rgb + float3(0,0,1);
  87. float3 node_148_nrm_detail = lerp(float3(0,0,1),(node_145.rgb*2.0+-1.0),_NormalBlendWeight) * float3(-1,-1,1);
  88. float3 node_148_nrm_combined = node_148_nrm_base*dot(node_148_nrm_base, node_148_nrm_detail)/node_148_nrm_base.z - node_148_nrm_detail;
  89. float3 node_148 = node_148_nrm_combined;
  90. float3 normalLocal = normalize(node_148);
  91. float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
  92. float3 lightDirection = normalize(_WorldSpaceLightPos0.xyz);
  93. float3 halfDirection = normalize(viewDirection+lightDirection);
  94. ////// Lighting:
  95. float attenuation = LIGHT_ATTENUATION(i);
  96. float3 attenColor = attenuation * _LightColor0.xyz;
  97. /////// Diffuse:
  98. float NdotL = dot( normalDirection, lightDirection );
  99. float3 diffuse = max( 0.0, NdotL) * attenColor + UNITY_LIGHTMODEL_AMBIENT.xyz;
  100. ////// Emissive:
  101. float4 node_2 = tex2D(_ColourMap,TRANSFORM_TEX(node_1339.rg, _ColourMap));
  102. float3 emissive = (node_2.r*(pow(1.0-max(0,dot(normalDirection, viewDirection)),5.0)*(_FresnelValue*pow(_FresnelColour.rgb,2.0))));
  103. ///////// Gloss:
  104. float gloss = _GlossRange;
  105. float specPow = exp2( gloss * 10.0+1.0);
  106. ////// Specular:
  107. NdotL = max(0.0, NdotL);
  108. float node_420 = (saturate((node_2.r*node_145.a))*node_2.g*_SpecularIntensity); // Specular
  109. float3 specularColor = float3(node_420,node_420,node_420);
  110. float3 specular = (floor(attenuation) * _LightColor0.xyz) * pow(max(0,dot(halfDirection,normalDirection)),specPow) * specularColor;
  111. float3 finalColor = 0;
  112. float3 diffuseLight = diffuse;
  113. float3 node_1028 = (node_2.rgb*lerp(float3(1,1,1),float3(node_2.a,node_2.a,node_2.a),_AOStrength)); // Colour map and Blend Map
  114. float4 node_1306 = tex2D(_BlendTextureMap,TRANSFORM_TEX(node_1339.rg, _BlendTextureMap));
  115. finalColor += diffuseLight * lerp(node_1028,node_1306.rgb,_BlendTextureWeight);
  116. finalColor += specular;
  117. finalColor += emissive;
  118. /// Final Color:
  119. return fixed4(finalColor,1);
  120. }
  121. ENDCG
  122. }
  123. Pass {
  124. Name "ForwardAdd"
  125. Tags {
  126. "LightMode"="ForwardAdd"
  127. }
  128. Blend One One
  129.  
  130.  
  131. Fog { Color (0,0,0,0) }
  132. CGPROGRAM
  133. #pragma vertex vert
  134. #pragma fragment frag
  135. #define UNITY_PASS_FORWARDADD
  136. #include "UnityCG.cginc"
  137. #include "AutoLight.cginc"
  138. #pragma multi_compile_fwdadd_fullshadows
  139. #pragma exclude_renderers xbox360 ps3 flash d3d11_9x
  140. #pragma target 3.0
  141. uniform float4 _LightColor0;
  142. uniform sampler2D _ColourMap; uniform float4 _ColourMap_ST;
  143. uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
  144. uniform float _GlossRange;
  145. uniform sampler2D _DetailNormalMap; uniform float4 _DetailNormalMap_ST;
  146. uniform float _NormalBlendWeight;
  147. uniform float _SpecularIntensity;
  148. uniform float _BlendTextureWeight;
  149. uniform float4 _FresnelColour;
  150. uniform float _FresnelValue;
  151. uniform float _AOStrength;
  152. uniform sampler2D _BlendTextureMap; uniform float4 _BlendTextureMap_ST;
  153. struct VertexInput {
  154. float4 vertex : POSITION;
  155. float3 normal : NORMAL;
  156. float4 tangent : TANGENT;
  157. float4 uv0 : TEXCOORD0;
  158. };
  159. struct VertexOutput {
  160. float4 pos : SV_POSITION;
  161. float4 uv0 : TEXCOORD0;
  162. float4 posWorld : TEXCOORD1;
  163. float3 normalDir : TEXCOORD2;
  164. float3 tangentDir : TEXCOORD3;
  165. float3 binormalDir : TEXCOORD4;
  166. LIGHTING_COORDS(5,6)
  167. };
  168. VertexOutput vert (VertexInput v) {
  169. VertexOutput o;
  170. o.uv0 = v.uv0;
  171. o.normalDir = mul(float4(v.normal,0), _World2Object).xyz;
  172. o.tangentDir = normalize( mul( _Object2World, float4( v.tangent.xyz, 0.0 ) ).xyz );
  173. o.binormalDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
  174. o.posWorld = mul(_Object2World, v.vertex);
  175. o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
  176. TRANSFER_VERTEX_TO_FRAGMENT(o)
  177. return o;
  178. }
  179. fixed4 frag(VertexOutput i) : COLOR {
  180. i.normalDir = normalize(i.normalDir);
  181. float3x3 tangentTransform = float3x3( i.tangentDir, i.binormalDir, i.normalDir);
  182. float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
  183. /////// Normals:
  184. float2 node_1340 = i.uv0;
  185. float4 node_145 = tex2D(_DetailNormalMap,TRANSFORM_TEX(node_1340.rg, _DetailNormalMap));
  186. float3 node_148_nrm_base = UnpackNormal(tex2D(_NormalMap,TRANSFORM_TEX(node_1340.rg, _NormalMap))).rgb + float3(0,0,1);
  187. float3 node_148_nrm_detail = lerp(float3(0,0,1),(node_145.rgb*2.0+-1.0),_NormalBlendWeight) * float3(-1,-1,1);
  188. float3 node_148_nrm_combined = node_148_nrm_base*dot(node_148_nrm_base, node_148_nrm_detail)/node_148_nrm_base.z - node_148_nrm_detail;
  189. float3 node_148 = node_148_nrm_combined;
  190. float3 normalLocal = normalize(node_148);
  191. float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
  192. float3 lightDirection = normalize(lerp(_WorldSpaceLightPos0.xyz, _WorldSpaceLightPos0.xyz - i.posWorld.xyz,_WorldSpaceLightPos0.w));
  193. float3 halfDirection = normalize(viewDirection+lightDirection);
  194. ////// Lighting:
  195. float attenuation = LIGHT_ATTENUATION(i);
  196. float3 attenColor = attenuation * _LightColor0.xyz;
  197. /////// Diffuse:
  198. float NdotL = dot( normalDirection, lightDirection );
  199. float3 diffuse = max( 0.0, NdotL) * attenColor;
  200. ///////// Gloss:
  201. float gloss = _GlossRange;
  202. float specPow = exp2( gloss * 10.0+1.0);
  203. ////// Specular:
  204. NdotL = max(0.0, NdotL);
  205. float4 node_2 = tex2D(_ColourMap,TRANSFORM_TEX(node_1340.rg, _ColourMap));
  206. float node_420 = (saturate((node_2.r*node_145.a))*node_2.g*_SpecularIntensity); // Specular
  207. float3 specularColor = float3(node_420,node_420,node_420);
  208. float3 specular = attenColor * pow(max(0,dot(halfDirection,normalDirection)),specPow) * specularColor;
  209. float3 finalColor = 0;
  210. float3 diffuseLight = diffuse;
  211. float3 node_1028 = (node_2.rgb*lerp(float3(1,1,1),float3(node_2.a,node_2.a,node_2.a),_AOStrength)); // Colour map and Blend Map
  212. float4 node_1306 = tex2D(_BlendTextureMap,TRANSFORM_TEX(node_1340.rg, _BlendTextureMap));
  213. finalColor += diffuseLight * lerp(node_1028,node_1306.rgb,_BlendTextureWeight);
  214. finalColor += specular;
  215. /// Final Color:
  216. return fixed4(finalColor * 1,0);
  217. }
  218. ENDCG
  219. }
  220. }
  221. FallBack "Bumped Specular"
  222. CustomEditor "ShaderForgeMaterialInspector"
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement