Famous / engine

MIT License
1.75k stars 250 forks source link

Bug with Materials #499

Open mown90 opened 8 years ago

mown90 commented 8 years ago

Hello guys

first of all thanks for your efforts , but to be honest it is not enough , like the last bug you replied to it was a month ago , the slack URL is not working , half of the learning lessons in the website are incomplete or broken , there is no way of any kind of communication with you guys , how the hell you want to people to use famous !!

anyway i tried to add materials to my webGL content , but i faced an error related to the time line var time = Material.time();

compile error: ERROR: 0:98: 'time' : undeclared identifier bundle.js:16106 compileShader bundle.js:16106 resetProgram bundle.js:15926 registerMaterial bundle.js:15837 handleMaterialInput bundle.js:16916 materialInput bundle.js:10138 receive bundle.js:9962 handleWith bundle.js:9539 drawCommands bundle.js:9597 update bundle.js:10391 step bundle.js:9341 loop bundle.js:9357 RequestAnimationFrameLoop._looper

1: precision mediump float; 2: uniform sampler2D u_textures[7]; 3: uniform mat4 u_perspective; 4: uniform mat4 u_view; 5: uniform vec3 u_resolution; 6: uniform mat4 u_transform; 7: uniform vec3 u_size; 8: uniform float u_time; 9: uniform float u_opacity; 10: uniform float u_metalness; 11: uniform vec4 u_glossiness; 12: uniform vec4 u_baseColor; 13: uniform vec3 u_normals; 14: uniform vec3 u_positionOffset; 15: uniform mat4 u_lightPosition; 16: uniform mat4 u_lightColor; 17: uniform vec3 u_ambientLight; 18: uniform float u_flatShading; 19: uniform float u_numLights; 20: varying vec2 v_textureCoordinate; 21: varying vec3 v_normal; 22: varying vec3 v_position; 23: varying vec3 veyeVector; 24: #define GLSLIFY 1 25: /* 26: * The MIT License (MIT) 27: * 28: * Copyright (c) 2015 Famous Industries Inc. 29: * 30: * Permission is hereby granted, free of charge, to any person obtaining a copy 31: * of this software and associated documentation files (the "Software"), to deal 32: * in the Software without restriction, including without limitation the rights 33: * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 34: * copies of the Software, and to permit persons to whom the Software is 35: * furnished to do so, subject to the following conditions: 36: * 37: * The above copyright notice and this permission notice shall be included in 38: * all copies or substantial portions of the Software. 39: * 40: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 41: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 42: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 43: * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 44: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 45: * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 46: \ THE SOFTWARE. 47: / 48: 49: / 50: * The MIT License (MIT) 51: * 52: * Copyright (c) 2015 Famous Industries Inc. 53: * 54: * Permission is hereby granted, free of charge, to any person obtaining a copy 55: * of this software and associated documentation files (the "Software"), to deal 56: * in the Software without restriction, including without limitation the rights 57: * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 58: * copies of the Software, and to permit persons to whom the Software is 59: * furnished to do so, subject to the following conditions: 60: * 61: * The above copyright notice and this permission notice shall be included in 62: * all copies or substantial portions of the Software. 63: * 64: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 65: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 66: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 67: * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 68: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 69: * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 70: \ THE SOFTWARE. 71: / 72: 73: / 74: * Placeholder for fragmentShader chunks to be templated in. 75: * Used for normal mapping, gloss mapping and colors. 76: * 77: * @method applyMaterial 78: * @private 79: 80: * 81: / 82: 83: 84: float applyMaterial_1_0(float ID) { 85:
86: return 1.; 87: } 88: 89: 90: vec3 applyMaterial_1_0(vec3 ID) { 91:
92: return vec3(0); 93: } 94: 95: 96: vec4 fa_4() { 97: vec4 fa_2 = texture2D(u_textures[0], v_textureCoordinate); 98: float fa_3 = time; 99: vec4 fa_4 = mix(fa_2, vec4(1,1,0,1), fa_3); 100: return fa_4; 101: } 102: vec4 applyMaterial_1_0(vec4 ID) { 103: if (int(abs(ID.x)) == 4) return fa4(); 104: 105: return vec4(0); 106: } 107: 108: 109: 110: / 111: * The MIT License (MIT) 112: * 113: * Copyright (c) 2015 Famous Industries Inc. 114: * 115: * Permission is hereby granted, free of charge, to any person obtaining a copy 116: * of this software and associated documentation files (the "Software"), to deal 117: * in the Software without restriction, including without limitation the rights 118: * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 119: * copies of the Software, and to permit persons to whom the Software is 120: * furnished to do so, subject to the following conditions: 121: * 122: * The above copyright notice and this permission notice shall be included in 123: * all copies or substantial portions of the Software. 124: * 125: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 126: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 127: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 128: * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 129: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 130: * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 131: * THE SOFTWARE. 132: / 133: 134: / 135: * Calculates the intensity of light on a surface. 136: 137: * @method applyLight 138: * @private 139: 140: _/ 141: vec4 applyLight_2_1(in vec4 baseColor, in vec3 normal, in vec4 glossiness, int numLights, vec3 ambientColor, vec3 eyeVector, mat4 lightPosition, mat4 lightColor, vec3 v_position) { 142: vec3 diffuse = vec3(0.0); 143: bool hasGlossiness = glossiness.a > 0.0; 144: bool hasSpecularColor = length(glossiness.rgb) > 0.0; 145: 146: for(int i = 0; i < 4; i++) { 147: if (i >= numLights) break; 148: vec3 lightDirection = normalize(lightPosition[i].xyz - vposition); 149: float lambertian = max(dot(lightDirection, normal), 0.0); 150: 151: if (lambertian > 0.0) { 152: diffuse += lightColor[i].rgb * baseColor.rgb * lambertian; 153: if (hasGlossiness) { 154: vec3 halfVector = normalize(lightDirection + eyeVector); 155: float specularWeight = pow(max(dot(halfVector, normal), 0.0), glossiness.a); 156: vec3 specularColor = hasSpecularColor ? glossiness.rgb : lightColor[i].rgb; 157: diffuse += specularColor * specularWeight * lambertian; 158: } 159: } 160: 161: } 162: 163: return vec4(ambientColor + diffuse, baseColor.a); 164: } 165: 166: 167: 168: 169: 170: / 171: * Writes the color of the pixel onto the screen 172: 173: * @method main 174: * @private 175: 176: 177: _/ 178: void main() { 179: vec4 material = u_baseColor.r >= 0.0 ? u_baseColor : applyMaterial_1_0(ubaseColor); 180: 181: / 182: * Apply lights only if flat shading is false 183: * and at least one light is added to the scene 184: / 185: bool lightsEnabled = (u_flatShading == 0.0) && (u_numLights > 0.0 || length(u_ambientLight) > 0.0); 186: 187: vec3 normal = normalize(v_normal); 188: vec4 glossiness = u_glossiness.x < 0.0 ? applyMaterial_1_0(u_glossiness) : u_glossiness; 189: 190: vec4 color = lightsEnabled ? 191: applyLight_2_1(material, normalize(v_normal), glossiness, 192: int(u_numLights), 193: u_ambientLight * u_baseColor.rgb, 194: normalize(v_eyeVector), 195: u_lightPosition, 196: u_lightColor,
197: v_position) 198: : material; 199: 200: gl_FragColor = color; 201: gl_FragColor.a *= u_opacity;
202: } 203:

Any ideas ?