@Override public void set (BaseShader shader, int inputID, Renderable renderable, Attributes combinedAttributes) { if (renderable.environment == null) shader.program.setUniform3fv(shader.loc(inputID), ones, 0, ones.length); else { renderable.worldTransform.getTranslation(tmpV1); if (combinedAttributes.has(ColorAttribute.AmbientLight)) cacheAmbientCubemap.set(((ColorAttribute)combinedAttributes.get(ColorAttribute.AmbientLight)).color); if (combinedAttributes.has(DirectionalLightsAttribute.Type)) { Array<DirectionalLight> lights = ((DirectionalLightsAttribute)combinedAttributes .get(DirectionalLightsAttribute.Type)).lights; for (int i = dirLightsOffset; i < lights.size; i++) cacheAmbientCubemap.add(lights.get(i).color, lights.get(i).direction); } if (combinedAttributes.has(PointLightsAttribute.Type)) { Array<PointLight> lights = ((PointLightsAttribute)combinedAttributes.get(PointLightsAttribute.Type)).lights; for (int i = pointLightsOffset; i < lights.size; i++) cacheAmbientCubemap.add(lights.get(i).color, lights.get(i).position, tmpV1, lights.get(i).intensity); } cacheAmbientCubemap.clamp(); shader.program.setUniform3fv(shader.loc(inputID), cacheAmbientCubemap.data, 0, cacheAmbientCubemap.data.length); } } }
@Override public void set (BaseShader shader, int inputID, Renderable renderable, Attributes combinedAttributes) { if (renderable.environment == null) shader.program.setUniform3fv(shader.loc(inputID), ones, 0, ones.length); else { renderable.worldTransform.getTranslation(tmpV1); if (combinedAttributes.has(ColorAttribute.AmbientLight)) cacheAmbientCubemap.set(((ColorAttribute)combinedAttributes.get(ColorAttribute.AmbientLight)).color); if (combinedAttributes.has(DirectionalLightsAttribute.Type)) { Array<DirectionalLight> lights = ((DirectionalLightsAttribute)combinedAttributes .get(DirectionalLightsAttribute.Type)).lights; for (int i = dirLightsOffset; i < lights.size; i++) cacheAmbientCubemap.add(lights.get(i).color, lights.get(i).direction); } if (combinedAttributes.has(PointLightsAttribute.Type)) { Array<PointLight> lights = ((PointLightsAttribute)combinedAttributes.get(PointLightsAttribute.Type)).lights; for (int i = pointLightsOffset; i < lights.size; i++) cacheAmbientCubemap.add(lights.get(i).color, lights.get(i).position, tmpV1, lights.get(i).intensity); } cacheAmbientCubemap.clamp(); shader.program.setUniform3fv(shader.loc(inputID), cacheAmbientCubemap.data, 0, cacheAmbientCubemap.data.length); } } }
protected T setParamsv (Parameter param, float[] values, int offset, int length) { if (!programBegan) { programBegan = true; program.begin(); } switch (param.arrayElementSize()) { case 4: program.setUniform4fv(param.mnemonic(), values, offset, length); break; case 3: program.setUniform3fv(param.mnemonic(), values, offset, length); break; case 2: program.setUniform2fv(param.mnemonic(), values, offset, length); break; default: case 1: program.setUniform1fv(param.mnemonic(), values, offset, length); break; } return (T)this; }
protected T setParamsv (Parameter param, float[] values, int offset, int length) { if (!programBegan) { programBegan = true; program.begin(); } switch (param.arrayElementSize()) { case 4: program.setUniform4fv(param.mnemonic(), values, offset, length); break; case 3: program.setUniform3fv(param.mnemonic(), values, offset, length); break; case 2: program.setUniform2fv(param.mnemonic(), values, offset, length); break; default: case 1: program.setUniform1fv(param.mnemonic(), values, offset, length); break; } return (T)this; }
@Override public void set (BaseShader shader, int inputID, Renderable renderable, Attributes combinedAttributes) { if (renderable.environment == null) shader.program.setUniform3fv(shader.loc(inputID), ones, 0, ones.length); else { renderable.worldTransform.getTranslation(tmpV1); if (combinedAttributes.has(ColorAttribute.AmbientLight)) cacheAmbientCubemap.set(((ColorAttribute)combinedAttributes.get(ColorAttribute.AmbientLight)).color); if (combinedAttributes.has(DirectionalLightsAttribute.Type)) { Array<DirectionalLight> lights = ((DirectionalLightsAttribute)combinedAttributes .get(DirectionalLightsAttribute.Type)).lights; for (int i = dirLightsOffset; i < lights.size; i++) cacheAmbientCubemap.add(lights.get(i).color, lights.get(i).direction); } if (combinedAttributes.has(PointLightsAttribute.Type)) { Array<PointLight> lights = ((PointLightsAttribute)combinedAttributes.get(PointLightsAttribute.Type)).lights; for (int i = pointLightsOffset; i < lights.size; i++) cacheAmbientCubemap.add(lights.get(i).color, lights.get(i).position, tmpV1, lights.get(i).intensity); } cacheAmbientCubemap.clamp(); shader.program.setUniform3fv(shader.loc(inputID), cacheAmbientCubemap.data, 0, cacheAmbientCubemap.data.length); } } }
protected T setParamsv (Parameter param, float[] values, int offset, int length) { if (!programBegan) { programBegan = true; program.begin(); } switch (param.arrayElementSize()) { case 4: program.setUniform4fv(param.mnemonic(), values, offset, length); break; case 3: program.setUniform3fv(param.mnemonic(), values, offset, length); break; case 2: program.setUniform2fv(param.mnemonic(), values, offset, length); break; default: case 1: program.setUniform1fv(param.mnemonic(), values, offset, length); break; } return (T)this; }
protected T setParamv (Parameter param, float[] values, int offset, int length) { program.begin(); switch (param.arrayElementSize()) { case 4: program.setUniform4fv(param.mnemonic(), values, offset, length); break; case 3: program.setUniform3fv(param.mnemonic(), values, offset, length); break; case 2: program.setUniform2fv(param.mnemonic(), values, offset, length); break; default: case 1: program.setUniform1fv(param.mnemonic(), values, offset, length); break; } program.end(); return (T)this; }
protected T setParamv (Parameter param, float[] values, int offset, int length) { program.begin(); switch (param.arrayElementSize()) { case 4: program.setUniform4fv(param.mnemonic(), values, offset, length); break; case 3: program.setUniform3fv(param.mnemonic(), values, offset, length); break; case 2: program.setUniform2fv(param.mnemonic(), values, offset, length); break; default: case 1: program.setUniform1fv(param.mnemonic(), values, offset, length); break; } program.end(); return (T)this; }
protected T setParamv (Parameter param, float[] values, int offset, int length) { program.begin(); switch (param.arrayElementSize()) { case 4: program.setUniform4fv(param.mnemonic(), values, offset, length); break; case 3: program.setUniform3fv(param.mnemonic(), values, offset, length); break; case 2: program.setUniform2fv(param.mnemonic(), values, offset, length); break; default: case 1: program.setUniform1fv(param.mnemonic(), values, offset, length); break; } program.end(); return (T)this; }