1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Adapted from the javascript implementation upon WebGL by kwaters@. 6 7 #ifndef SHADERSRC_H_INCLUDED 8 #define SHADERSRC_H_INCLUDED 9 10 static const char *sFlatVertexSource = 11 "attribute highp vec3 pos;\n" 12 "attribute lowp vec4 colorIn;\n" 13 "uniform highp mat4 mvp;\n" 14 "varying lowp vec4 color;\n" 15 "void main() {\n" 16 " color = colorIn;\n" 17 " gl_Position = mvp * vec4(pos.xyz, 1.);\n" 18 "}\n"; 19 20 static const char *sFlatFragmentSource = 21 "varying lowp vec4 color;\n" 22 "void main() {\n" 23 " gl_FragColor = vec4(color.rgb, 1.0);\n" 24 "}\n"; 25 26 static const char *sLitVertexSource = 27 "attribute highp vec3 pos;\n" 28 "attribute highp vec3 normal;\n" 29 "attribute lowp vec4 colorIn;\n" 30 "\n" 31 "varying lowp vec4 color;\n" 32 "\n" 33 "uniform highp mat4 mvp;\n" 34 "uniform highp mat3 normalMatrix;\n" 35 "uniform lowp vec4 ambient;\n" 36 "uniform lowp float shininess;\n" 37 "uniform lowp vec3 light_0_direction;\n" 38 "uniform lowp vec4 light_0_diffuse;\n" 39 "uniform lowp vec4 light_0_specular;\n" 40 "uniform lowp vec3 light_1_direction;\n" 41 "uniform lowp vec4 light_1_diffuse;\n" 42 "uniform lowp vec3 light_2_direction;\n" 43 "uniform lowp vec4 light_2_diffuse;\n" 44 "\n" 45 "highp vec3 worldNormal;\n" 46 "\n" 47 "lowp vec4 SpecularLight(highp vec3 direction,\n" 48 " lowp vec4 diffuseColor,\n" 49 " lowp vec4 specularColor) {\n" 50 " lowp vec3 lightDir = normalize(direction);\n" 51 " lowp float diffuse = max(0., dot(worldNormal, lightDir));\n" 52 " lowp float specular = 0.;\n" 53 " if (diffuse > 0.) {\n" 54 " highp vec3 halfv = normalize(lightDir + vec3(0., 0., 1.));\n" 55 " specular = pow(max(0., dot(halfv, worldNormal)), shininess);\n" 56 " }\n" 57 " return diffuse * diffuseColor * colorIn + specular * specularColor;\n" 58 "}\n" 59 "\n" 60 "lowp vec4 DiffuseLight(highp vec3 direction, lowp vec4 diffuseColor) {\n" 61 " highp vec3 lightDir = normalize(direction);\n" 62 " lowp float diffuse = max(0., dot(worldNormal, lightDir));\n" 63 " return diffuse * diffuseColor * colorIn;\n" 64 "}\n" 65 "\n" 66 "void main() {\n" 67 " worldNormal = normalize(normalMatrix * normal);\n" 68 "\n" 69 " gl_Position = mvp * vec4(pos, 1.);\n" 70 "\n" 71 " color = ambient * colorIn;\n" 72 " color += SpecularLight(light_0_direction, light_0_diffuse,\n" 73 " light_0_specular);\n" 74 " color += DiffuseLight(light_1_direction, light_1_diffuse);\n" 75 " color += DiffuseLight(light_2_direction, light_2_diffuse);\n" 76 "}\n"; 77 78 static const char *sFadeVertexSource = 79 "attribute highp vec2 pos;\n" 80 "\n" 81 "varying lowp vec4 color;\n" 82 "\n" 83 "uniform lowp float minFade;\n" 84 "\n" 85 "void main() {\n" 86 " color = vec4(minFade, minFade, minFade, 1.);\n" 87 " gl_Position = vec4(pos, 0., 1.);\n" 88 "}\n"; 89 90 #endif // SHADERSRC_H_INCLUDED 91 92