unsafe public void ExportQuanLMData() { List <OutputLightMapData> out_lm_data_list = new List <OutputLightMapData>(); for (int i = 0; i < ucBakingData.indirected_lighting_baking_data.Count; ++i) { OutputLightMapData data = new OutputLightMapData(); data.name = ucBakingData.indirected_lighting_baking_data[i].name; data.width = ucBakingData.indirected_lighting_baking_data[i].width; data.height = ucBakingData.indirected_lighting_baking_data[i].height; data.outdata = ucBakingData.indirected_lighting_baking_data[i].outdata; for (int j = 0; j < data.outdata.Length; ++j) { data.outdata[j].IncidentLighting[0] += ucBakingData.direct_lighting_baking_data[i].outdata[j].IncidentLighting[0]; data.outdata[j].IncidentLighting[1] += ucBakingData.direct_lighting_baking_data[i].outdata[j].IncidentLighting[1]; data.outdata[j].IncidentLighting[2] += ucBakingData.direct_lighting_baking_data[i].outdata[j].IncidentLighting[2]; //Add SH data.outdata[j].SHVector = data.outdata[j].SHVector + ucBakingData.direct_lighting_baking_data[i].outdata[j].SHVector; data.outdata[j].SHCorrection += ucBakingData.direct_lighting_baking_data[i].outdata[j].SHCorrection; //data.outdata[j].SHVector.r.v[0] = 1.0f; //data.outdata[j].SHCorrection = 1.0f; } //out_lm_data_list.Add(data); out_lm_data_list.Add(ucBakingData.direct_lighting_baking_data[i]); } //Debug.LogFormat("Output list = {0}", out_lm_data_list.Count); foreach (OutputLightMapData out_data in out_lm_data_list) { QuantifierResult(out_data.outdata, out_data.width, out_data.height, out_data.name); } }
unsafe public void CalculateAllBakedLighting() { List <LightmassBakerData> datas = ucExportMesh.GetBakerData(); //ucNative.Invoke_Void<PreallocRadiositySurfaceCachePointers>(nativeLibraryPtr, datas.Count); List <OutputLightMapData> out_lm_data_list = new List <OutputLightMapData>(); //int i = 0; //int texel_num = 0; foreach (LightmassBakerData obj in datas) { int texel_num = obj.size_x * obj.size_y; float[] texel_radius = new float[texel_num]; for (int i = 0; i < texel_num; ++i) { texel_radius[i] = 0.1f; } GatheredLightSample[] tmp_out_lm_data = new GatheredLightSample[texel_num]; object[] param = new object[] { texel_num, obj.size_x, obj.size_y, 32, obj.world_pos_map, obj.world_normal_map, texel_radius, tmp_out_lm_data }; ucNative.Invoke_Void <CalculateAllLightingAndShadow>(nativeLibraryPtr, param); OutputLightMapData lm_data = new OutputLightMapData(); lm_data.name = obj.name; lm_data.width = obj.size_x; lm_data.height = obj.size_y; lm_data.outdata = tmp_out_lm_data; out_lm_data_list.Add(lm_data); } //ucNative.Invoke_Void<SetTotalTexelsForProgressReport>(nativeLibraryPtr, texel_num); Debug.LogFormat("Output list = {0}", out_lm_data_list.Count); //ucBakingData.direct_lighting_baking_data = out_lm_data_list; foreach (OutputLightMapData out_data in out_lm_data_list) { QuantifierResult(out_data.outdata, out_data.width, out_data.height, out_data.name); } }