void __ShaderProgramLocations::GetMaterialProgramLocations(SimpleProgram &program)
{
locations.clear();
locations["Ka"] = Ka = program.GetUniformLocation("Ka");
locations["Kd"] = Kd = program.GetUniformLocation("Kd");
locations["Ks"] = Ks = program.GetUniformLocation("Ks");
locations["Ke"] = Ke = program.GetUniformLocation("Ke");
locations["Tr"] = Tr = program.GetUniformLocation("Tr");
locations["Tf"] = Tf = program.GetUniformLocation("Tf");
locations["Ns"] = Ns = program.GetUniformLocation("Ns");
locations["Ni"] = Ni = program.GetUniformLocation("Ni");
locations["PBk"] = PBk = program.GetUniformLocation("PBk");
locations["PBm"] = PBm = program.GetUniformLocation("PBm");
locations["PBKdm"] = PBKdm = program.GetUniformLocation("PBKdm");
locations["PBKsm"] = PBKsm = program.GetUniformLocation("PBKsm");
locations["PBior"] = PBior = program.GetUniformLocation("PBior");
locations["PBGGXgamma"] = PBGGXgamma = program.GetUniformLocation("PBGGXgamma");
locations["PBmap"] = PBmap = program.GetUniformLocation("PBmap");
///
locations["map_Ka"] = map_Ka = program.GetUniformLocation("map_Ka");
locations["map_Kd"] = map_Kd = program.GetUniformLocation("map_Kd");
locations["map_Ks"] = map_Ks = program.GetUniformLocation("map_Ks");
locations["map_Ke"] = map_Ke = program.GetUniformLocation("map_Ke");
locations["map_Tr"] = map_Tr = program.GetUniformLocation("map_Tr");
locations["map_Tf"] = map_Tf = program.GetUniformLocation("map_Tf");
locations["map_Ni"] = map_Ni = program.GetUniformLocation("map_Ni");
locations["map_Ns"] = map_Ns = program.GetUniformLocation("map_Ns");
locations["map_bump"] = map_bump = program.GetUniformLocation("map_bump");
locations["map_normal"] = map_normal = program.GetUniformLocation("map_normal");
locations["map_Ka_mix"] = map_Ka_mix = program.GetUniformLocation("map_Ka_mix");
locations["map_Kd_mix"] = map_Kd_mix = program.GetUniformLocation("map_Kd_mix");
locations["map_Ks_mix"] = map_Ks_mix = program.GetUniformLocation("map_Ks_mix");
locations["map_Ke_mix"] = map_Ke_mix = program.GetUniformLocation("map_Ke_mix");
locations["map_Tf_mix"] = map_Tf_mix = program.GetUniformLocation("map_Tf_mix");
locations["map_Tr_mix"] = map_Tr_mix = program.GetUniformLocation("map_Tr_mix");
locations["map_Ni_mix"] = map_Ni_mix = program.GetUniformLocation("map_Ni_mix");
locations["map_Ns_mix"] = map_Ns_mix = program.GetUniformLocation("map_Ns_mix");
locations["map_bump_mix"] = map_bump_mix = program.GetUniformLocation("map_bump_mix");
locations["map_normal_mix"] = map_normal_mix = program.GetUniformLocation("map_normal_mix");
locations["Spheres"] = sphere_array = program.GetUniformLocation("Spheres[0]");
locations["SpheresCount"] = sphere_count = program.GetUniformLocation("SpheresCount");
locations["SpheresKe"] = sphere_Ke = program.GetUniformLocation("SpheresKe[0]");
for (int i = 0; i < 16; i++)
{
char name[64];
sprintf_s(name, "SphlLights[%d].Enabled", i); locations[name] = sphl_lights_enabled[i] = program.GetUniformLocation(name);
sprintf_s(name, "SphlLights[%d].E0", i); locations[name] = sphl_lights_E0[i] = program.GetUniformLocation(name);
sprintf_s(name, "SphlLights[%d].Position", i); locations[name] = sphl_lights_position[i] = program.GetUniformLocation(name);
sprintf_s(name, "SphlLights[%d].LightProbeCubeMap", i); locations[name] = sphl_lights_lightProbeCubeMap[i] = program.GetUniformLocation(name);
sprintf_s(name, "SphlLights[%d].EnvironmentCubeMap", i); locations[name] = sphl_lights_environmentCubeMap[i] = program.GetUniformLocation(name);
sprintf_s(name, "SphlLights[%d].DepthShadowCubeMap", i); locations[name] = sphl_lights_depthShadowCubeMap[i] = program.GetUniformLocation(name);
sprintf_s(name, "SphlLights[%d].DepthShadowZFar", i); locations[name] = sphl_lights_depthShadowZFar[i] = program.GetUniformLocation(name);
for (int j = 0; j < 9; j++)
{
sphl_lights_sph[i][j] = -1;
sprintf_s(name, "SphlLights[%d].sph[%d]", i, j); locations[name] = sphl_lights_sph[i][j] = program.GetUniformLocation(name);
}
}
locations["ToneMapScale"] = toneMapScale = program.GetUniformLocation("ToneMapScale");
locations["ToneMapExposure"] = toneMapExposure = program.GetUniformLocation("ToneMapExposure");
locations["ToneMapGamma"] = toneMapGamma = program.GetUniformLocation("ToneMapGamma");
locations["SunDirTo"] = sunDirTo = program.GetUniformLocation("SunDirTo");
locations["SunColor"] = sunColor = program.GetUniformLocation("SunColor");
locations["SunSize"] = sunSize = program.GetUniformLocation("SunSize");
locations["SunShadowMap"] = sunShadowMap = program.GetUniformLocation("SunShadowMap");
locations["SunColorMap"] = sunColorMap = program.GetUniformLocation("SunColorMap");
locations["SunShadowMatrix"] = sunShadowMatrix = program.GetUniformLocation("SunShadowMatrix");
locations["SunE0"] = sunE0 = program.GetUniformLocation("SunE0");
locations["GroundE0"] = groundE0 = program.GetUniformLocation("GroundE0");
locations["EnviroCubeMap"] = enviroCubeMap = program.GetUniformLocation("EnviroCubeMap");
locations["EnviroCubeMapAmount"] = enviroCubeMapAmount = program.GetUniformLocation("EnviroCubeMapAmount");
locations["PBSkyCubeMap"] = pbskyCubeMap = program.GetUniformLocation("PBSkyCubeMap");
locations["ShaderDebugChoice"] = shaderDebugChoice = program.GetUniformLocation("ShaderDebugChoice");
locations["ShaderDebugLight"] = shaderDebugLight = program.GetUniformLocation("ShaderDebugLight");
locations["ShaderDebugSphl"] = shaderDebugSphl = program.GetUniformLocation("ShaderDebugSphl");
// Do the new way by finding out what uniforms the program actually has, or is looking for...
newLocationList.Clear();
for (auto uniform : program.activeUniforms)
{
// uniform.first is the name of the uniform...
// uniform.second has the details...
newLocationList[uniform.first] = MakeSharedIntProperty(uniform.second.index);
}
}
Comments