Uniform lightData = shader.getUniform("g_LightData"); lightData.setVector4Length(numLights * 3);//8 lights * max 3 Uniform ambientColor = shader.getUniform("g_AmbientLightColor"); Uniform lightProbeData = shader.getUniform("g_LightProbeData"); Uniform lightProbeData2 = shader.getUniform("g_LightProbeData2"); Uniform lightProbeData3 = shader.getUniform("g_LightProbeData3"); Uniform shCoeffs = shader.getUniform("g_ShCoeffs"); Uniform lightProbePemMap = shader.getUniform("g_PrefEnvMap"); Uniform shCoeffs2 = shader.getUniform("g_ShCoeffs2"); Uniform lightProbePemMap2 = shader.getUniform("g_PrefEnvMap2"); Uniform shCoeffs3 = shader.getUniform("g_ShCoeffs3"); Uniform lightProbePemMap3 = shader.getUniform("g_PrefEnvMap3");
private void updateLightListUniforms(Matrix4f viewMatrix, Shader shader, LightList lights) { Uniform ambientColor = shader.getUniform("g_AmbientLightColor"); ambientColor.setValue(VarType.Vector4, getAmbientColor(lights, true, ambientLightColor)); Uniform lightData = shader.getUniform("g_LightData");
private int applyOverrides(Renderer renderer, Shader shader, SafeArrayList<MatParamOverride> overrides, int unit) { for (MatParamOverride override : overrides.getArray()) { VarType type = override.getVarType(); MatParam paramDef = def.getMaterialParam(override.getName()); if (paramDef == null || paramDef.getVarType() != type || !override.isEnabled()) { continue; } Uniform uniform = shader.getUniform(override.getPrefixedName()); if (override.getValue() != null) { if (type.isTextureType()) { renderer.setTexture(unit, (Texture) override.getValue()); uniform.setValue(VarType.Int, unit); unit++; } else { uniform.setValue(type, override.getValue()); } } else { uniform.clearValue(); } } return unit; }
Uniform uniform = shader.getUniform(param.getPrefixedName()); if (uniform.isSetByCurrentMaterial()) { continue;
@Override public void render(RenderManager renderManager, Shader shader, Geometry geometry, LightList lights, int lastTexUnit) { Renderer r = renderManager.getRenderer(); Uniform lightDir = shader.getUniform("g_LightDirection"); Uniform lightColor = shader.getUniform("g_LightColor"); Uniform lightPos = shader.getUniform("g_LightPosition"); Uniform ambientColor = shader.getUniform("g_AmbientLightColor"); boolean isFirstLight = true; boolean isSecondLight = false;
Uniform lightData = shader.getUniform("g_LightData"); lightData.setVector4Length(numLights * 3);//8 lights * max 3 Uniform ambientColor = shader.getUniform("g_AmbientLightColor");
public Uniform getLightPositionUniform() { if (lightPositionUniform == null) { lightPositionUniform = getUniform("g_LightPosition"); } return lightPositionUniform; } public Uniform getAmbientColorUniform() {
public Uniform getLightColorUniform() { if (lightColorUniform == null) { lightColorUniform = getUniform("g_LightColor"); } return lightColorUniform; }
public Uniform getLightDirectionUniform() { if (lightDirectionUniform == null) { lightDirectionUniform = getUniform("g_LightDirection"); } return lightDirectionUniform; }
public Uniform getAmbientColorUniform() { if (ambientLightColorUniform == null) { ambientLightColorUniform = getUniform("g_AmbientLightColor"); } return ambientLightColorUniform; }
void updateUniformParam(String paramName, VarType type, Object value, boolean ifNotOwner) { Uniform u = shader.getUniform(paramName); // if (ifNotOwner && u.getLastChanger() == owner) // return; switch (type) { case Texture2D: // fall intentional case Texture3D: case TextureArray: case TextureCubeMap: case Int: u.setValue(VarType.Int, value); break; default: u.setValue(type, value); break; } // u.setLastChanger(owner); } void updateUniformParam(int paramIndex, VarType type, Object value, boolean ifNotOwner) {
void updateUniformParam(int paramIndex, VarType type, Object value, boolean ifNotOwner) { Uniform u = uniformArray[paramIndex]; if (u == null) { u = shader.getUniform(paramValues.getValue(paramIndex).getPrefixedName()); uniformArray[paramIndex] = u; } // if (ifNotOwner && u.getLastChanger() == owner) // return; switch (type) { case Texture2D: // fall intentional case Texture3D: case TextureArray: case TextureCubeMap: case Int: u.setValue(VarType.Int, value); break; default: u.setValue(type, value); break; } // u.setLastChanger(owner); }
private void loadShader(AssetManager manager) { // recompute define list DefineList allDefines = new DefineList(); allDefines.addFrom(def.getShaderPresetDefines()); allDefines.addFrom(defines); ShaderKey key = new ShaderKey(def.getVertexShaderName(), def.getFragmentShaderName(), allDefines, def.getShaderLanguage()); shader = manager.loadShader(key); if (shader == null) { logger.warning("Failed to reload shader!"); return; } // refresh the uniform links //owner.updateUniformLinks(); // register the world bound uniforms worldBindUniforms.clear(); for (UniformBinding binding : def.getWorldBindings()) { Uniform uniform = shader.getUniform("g_" + binding.name()); uniform.setBinding(binding); if (uniform != null) { worldBindUniforms.add(uniform); } } needReload = false; }
private void updateLightListUniforms(Matrix4f viewMatrix, Shader shader, LightList lights) { Uniform ambientColor = shader.getUniform("g_AmbientLightColor"); ambientColor.setValue(VarType.Vector4, getAmbientColor(lights, true, ambientLightColor)); Uniform lightData = shader.getUniform("g_LightData");
private int updateShaderMaterialParameters(Renderer renderer, Shader shader, SafeArrayList<MatParamOverride> worldOverrides, SafeArrayList<MatParamOverride> forcedOverrides) { int unit = 0; if (worldOverrides != null) { unit = applyOverrides(renderer, shader, worldOverrides, unit); } if (forcedOverrides != null) { unit = applyOverrides(renderer, shader, forcedOverrides, unit); } for (int i = 0; i < paramValues.size(); i++) { MatParam param = paramValues.getValue(i); VarType type = param.getVarType(); Uniform uniform = shader.getUniform(param.getPrefixedName()); if (uniform.isSetByCurrentMaterial()) { continue; } if (type.isTextureType()) { renderer.setTexture(unit, (Texture) param.getValue()); uniform.setValue(VarType.Int, unit); unit++; } else { uniform.setValue(type, param.getValue()); } } //TODO HACKY HACK remove this when texture unit is handled by the uniform. return unit; }
private int applyOverrides(Renderer renderer, Shader shader, SafeArrayList<MatParamOverride> overrides, int unit) { for (MatParamOverride override : overrides.getArray()) { VarType type = override.getVarType(); MatParam paramDef = def.getMaterialParam(override.getName()); if (paramDef == null || paramDef.getVarType() != type || !override.isEnabled()) { continue; } Uniform uniform = shader.getUniform(override.getPrefixedName()); if (override.getValue() != null) { if (type.isTextureType()) { renderer.setTexture(unit, (Texture) override.getValue()); uniform.setValue(VarType.Int, unit); unit++; } else { uniform.setValue(type, override.getValue()); } } else { uniform.clearValue(); } } return unit; }
@Override public void render(RenderManager renderManager, Shader shader, Geometry geometry, LightList lights, int lastTexUnit) { Renderer r = renderManager.getRenderer(); Uniform lightDir = shader.getUniform("g_LightDirection"); Uniform lightColor = shader.getUniform("g_LightColor"); Uniform lightPos = shader.getUniform("g_LightPosition"); Uniform ambientColor = shader.getUniform("g_AmbientLightColor"); boolean isFirstLight = true; boolean isSecondLight = false;
Uniform lightData = shader.getUniform("g_LightData"); lightData.setVector4Length(numLights * 3);//8 lights * max 3 Uniform ambientColor = shader.getUniform("g_AmbientLightColor"); Uniform lightProbeData = shader.getUniform("g_LightProbeData"); lightProbeData.setVector4Length(1); Uniform shCoeffs = shader.getUniform("g_ShCoeffs"); Uniform lightProbePemMap = shader.getUniform("g_PrefEnvMap");
Uniform lightData = shader.getUniform("g_LightData"); lightData.setVector4Length(numLights * 3);//8 lights * max 3 Uniform ambientColor = shader.getUniform("g_AmbientLightColor");