Advertisement
Guest User

test.fs

a guest
Jul 30th, 2015
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.48 KB | None | 0 0
  1. //#define DEBUG
  2. #ifdef DEBUG
  3.     #define positionFlag
  4.     #define binormalFlag
  5.     #define tangentFlag
  6.     #define normalFlag
  7.     #define lightingFlag
  8.     #define ambientCubemapFlag
  9.     #define numDirectionalLights 2
  10.     #define numPointLights 5
  11.     #define environmentCubemapFlag
  12.     #define texCoord0Flag
  13.     #define texCoord1Flag
  14.     #define diffuseTextureFlag
  15.     #define diffuseTextureCoord texCoord0
  16.     #define normalTextureFlag
  17.     #define normalTextureCoord texCoord0
  18.     #define diffuseColorFlag
  19.     #define specularColorFlag
  20.     #define emissiveColorFlag
  21.     #define shininessFlag
  22. #endif
  23. #ifdef GL_ES
  24. #define LOWP lowp
  25. #define MED mediump
  26. #define HIGH highp
  27. precision mediump float;
  28. #else
  29. #define MED
  30. #define LOWP
  31. #define HIGH
  32. #endif
  33.  
  34. ////////////////////////////////////////////////////////////////////////////////////
  35. ////////// POSITION ATTRIBUTE - FRAGMENT
  36. ////////////////////////////////////////////////////////////////////////////////////
  37. #define nop() {}
  38.  
  39. varying vec4 v_position;
  40. vec4 g_position = vec4(0.0, 0.0, 0.0, 1.0);
  41. #define pullPosition() (g_position = v_position)
  42.  
  43. ////////////////////////////////////////////////////////////////////////////////////
  44. ////////// COLOR ATTRIBUTE - FRAGMENT
  45. ///////////////////////////////////////////////////////////////////////////////////
  46. varying vec4 v_color;
  47. vec4 g_color = vec4(1.0, 1.0, 1.0, 1.0);
  48. #define pullColor() (g_color = v_color)
  49.  
  50. ////////////////////////////////////////////////////////////////////////////////////
  51. ////////// NORMAL ATTRIBUTE - FRAGMENT
  52. ///////////////////////////////////////////////////////////////////////////////////
  53. varying vec3 v_normal;
  54. vec3 g_normal = vec3(0.0, 0.0, 1.0);
  55. #define pullNormal() (g_normal = v_normal)
  56.  
  57. ////////////////////////////////////////////////////////////////////////////////////
  58. ////////// BINORMAL ATTRIBUTE - FRAGMENT
  59. ///////////////////////////////////////////////////////////////////////////////////
  60. varying vec3 v_binormal;
  61. vec3 g_binormal = vec3(0.0, 0.0, 1.0);
  62. #define pullBinormal() (g_binormal = v_binormal)
  63.  
  64. ////////////////////////////////////////////////////////////////////////////////////
  65. ////////// TANGENT ATTRIBUTE - FRAGMENT
  66. ///////////////////////////////////////////////////////////////////////////////////
  67. varying vec3 v_tangent;
  68. vec3 g_tangent = vec3(1.0, 0.0, 0.0);
  69. #define pullTangent() (g_tangent = v_tangent)
  70.  
  71. ////////////////////////////////////////////////////////////////////////////////////
  72. ////////// TEXCOORD0 ATTRIBUTE - FRAGMENT
  73. ///////////////////////////////////////////////////////////////////////////////////
  74. varying vec2 v_texCoord0;
  75. vec2 g_texCoord0 = vec2(0.0, 0.0);
  76. #define pullTexCoord0() (g_texCoord0 = v_texCoord0)
  77.  
  78.  
  79. // Uniforms which are always available
  80. uniform mat4 u_projViewTrans;
  81.  
  82. uniform mat4 u_worldTrans;
  83.  
  84. uniform vec4 u_cameraPosition;
  85.  
  86. uniform mat3 u_normalMatrix;
  87.  
  88. // Other uniforms
  89. #ifdef blendedFlag
  90. uniform float u_opacity;
  91. #else
  92. const float u_opacity = 1.0;
  93. #endif
  94.  
  95. #ifdef alphaTestFlag
  96. uniform float u_alphaTest;
  97. #else
  98. const float u_alphaTest = 0.0;
  99. #endif
  100.  
  101. #ifdef shininessFlag
  102. uniform float u_shininess;
  103. #else
  104. const float u_shininess = 20.0;
  105. #endif
  106.  
  107.  
  108. #ifdef diffuseColorFlag
  109. uniform vec4 u_diffuseColor;
  110. #endif
  111.  
  112. #ifdef diffuseTextureFlag
  113. uniform sampler2D u_diffuseTexture;
  114. #endif
  115.  
  116. #ifdef specularColorFlag
  117. uniform vec4 u_specularColor;
  118. #endif
  119.  
  120. #ifdef specularTextureFlag
  121. uniform sampler2D u_specularTexture;
  122. #endif
  123.  
  124. #ifdef normalTextureFlag
  125. uniform sampler2D u_normalTexture;
  126. #endif
  127.  
  128. #if defined(diffuseTextureFlag) || defined(specularTextureFlag)
  129. #define textureFlag
  130. #endif
  131.  
  132. #if defined(specularTextureFlag) || defined(specularColorFlag)
  133. #define specularFlag
  134. #endif
  135.  
  136. #if defined(specularFlag) || defined(fogFlag)
  137. #define cameraPositionFlag
  138. #endif
  139.  
  140. #ifdef shadowMapFlag
  141. #define separateAmbientFlag
  142. #endif
  143.  
  144.  
  145.  
  146.  
  147. #if defined(diffuseTextureFlag) && defined(diffuseColorFlag)
  148. #define fetchColorDiffuseTD(texCoord, defaultValue) texture2D(u_diffuseTexture, texCoord) * u_diffuseColor
  149. #elif defined(diffuseTextureFlag)
  150. #define fetchColorDiffuseTD(texCoord, defaultValue) texture2D(u_diffuseTexture, texCoord)
  151. #elif defined(diffuseColorFlag)
  152. #define fetchColorDiffuseTD(texCoord, defaultValue) u_diffuseColor
  153. #else
  154. #define fetchColorDiffuseTD(texCoord, defaultValue) (defaultValue)
  155. #endif
  156.  
  157.  
  158. #define fetchColorDiffuseD(defaultValue) fetchColorDiffuseTD(g_texCoord0, defaultValue)
  159. #define fetchColorDiffuse() fetchColorDiffuseD(vec4(1.0))
  160.  
  161. #if defined(diffuseTextureFlag) || defined(diffuseColorFlag)
  162. #define applyColorDiffuse(baseColor) ((baseColor) * fetchColorDiffuseD(vec4(1.0))
  163. #else
  164. #define applyColorDiffuse(baseColor) (baseColor)
  165. #endif
  166.  
  167.  
  168. #if defined(specularTextureFlag) && defined(specularColorFlag)
  169. #define fetchColorSpecularTD(texCoord, defaultValue) (texture2D(u_specularTexture, texCoord).rgb * u_specularColor.rgb)
  170. #elif defined(specularTextureFlag)
  171. #define fetchColorSpecularTD(texCoord, defaultValue) texture2D(u_specularTexture, texCoord).rgb
  172. #elif defined(specularColorFlag)
  173. #define fetchColorSpecularTD(texCoord, defaultValue) u_specularColor.rgb
  174. #else
  175. #define fetchColorSpecularTD(texCoord, defaultValue) (defaultValue)
  176. #endif
  177.  
  178.  
  179. #define fetchColorSpecularD(defaultValue) fetchColorSpecularTD(g_texCoord0, defaultValue)
  180. #define fetchColorSpecular() fetchColorSpecularD(vec3(0.0))
  181.  
  182. #if defined(specularTextureFlag) || defined(specularColorFlag)
  183. #define applyColorSpecular(intensity) ((intensity) * fetchColorSpecularD(vec3(0.0))
  184. #define addColorSpecular(baseColor, intensity)  ((baseColor) + applyColorSpecular(intensity))
  185. #else
  186. #define applyColorSpecular(intensity) (vec3(0.0))
  187. #define addColorSpecular(baseColor, intensity)  (baseColor)
  188. #endif
  189.  
  190. varying vec3 v_lightDir;
  191. varying vec3 v_lightCol;
  192. varying vec3 v_viewDir;
  193. varying vec3 v_ambientLight;
  194. //
  195. #ifdef environmentCubemapFlag
  196. varying vec3 v_reflect;
  197. #endif
  198. //
  199. #ifdef environmentCubemapFlag
  200. uniform samplerCube u_environmentCubemap;
  201. #endif
  202.  
  203. #ifdef reflectionColorFlag
  204. uniform vec4 u_reflectionColor;
  205. #endif
  206.  
  207. #define saturate(x) clamp( x, 0.0, 1.0 )
  208.  
  209. void main() {
  210. g_color = v_color ;//pullColor();
  211. g_texCoord0 = v_texCoord0 ;//pullTexCoord0();
  212.  
  213. #if defined(diffuseTextureFlag) || defined(diffuseColorFlag)
  214. vec4 diffuse = g_color * fetchColorDiffuseD(vec4(1.0));
  215. #else
  216. vec4 diffuse = g_color;
  217. #endif
  218.  
  219. vec3 specular = fetchColorSpecularD(vec3(0.0));
  220.  
  221. #ifdef normalTextureFlag
  222. vec4 N = vec4(normalize(texture2D(u_normalTexture, g_texCoord0).xyz * 2.0 - 1.0), 1.0);
  223. //
  224. #ifdef environmentCubemapFlag
  225. vec3 reflectDir = normalize(v_reflect + (vec3(0.0, 0.0, 1.0) - N.xyz));
  226. #endif
  227. #else
  228. vec4 N = vec4(0.0, 0.0, 1.0, 1.0);
  229. #ifdef environmentCubemapFlag
  230. vec3 reflectDir = normalize(v_reflect);
  231. #endif
  232. #endif
  233.  
  234. vec3 L = normalize(v_lightDir);
  235. vec3 V = normalize(v_viewDir);
  236. vec3 H = normalize(L + V);
  237. float NL = dot(N.xyz, L);
  238. float NH = max(0.0, dot(N.xyz, H));
  239.  
  240. float specOpacity = 1.0; //(1.0 - diffuse.w);
  241. float spec = min(1.0, pow(NH, 10.0) * specOpacity);
  242. float selfShadow = saturate(4.0 * NL);
  243. //
  244. #ifdef environmentCubemapFlag
  245. vec3 environment = textureCube(u_environmentCubemap, reflectDir).rgb;
  246. specular *= environment;
  247. #ifdef reflectionColorFlag
  248. diffuse.rgb = saturate(vec3(1.0) - u_reflectionColor.rgb) * diffuse.rgb + environment * u_reflectionColor.rgb;
  249. #endif
  250. #endif
  251.  
  252. gl_FragColor = vec4(saturate((v_lightCol * diffuse.rgb) * NL), diffuse.w);
  253. gl_FragColor.rgb += v_ambientLight * diffuse.rgb;
  254. gl_FragColor.rgb += (selfShadow * spec) * specular;
  255. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement