public static UpdateShadowInfoWithBrightestSpot ( |
||
cubemapInfo | ||
return | void |
public static void UpdateShadowInfoWithBrightestSpot(CubemapInfo cubemapInfo)
{
m_LookDevCubeToLatlong.SetTexture("_MainTex", cubemapInfo.cubemap);
m_LookDevCubeToLatlong.SetVector("_WindowParams", new Vector4(10000f, -1000f, 2f, 0f));
m_LookDevCubeToLatlong.SetVector("_CubeToLatLongParams", new Vector4(0.01745329f * cubemapInfo.angleOffset, 0.5f, 1f, 3f));
m_LookDevCubeToLatlong.SetPass(0);
int num = 250;
int num2 = 0x7d;
Graphics.Blit(cubemapInfo.cubemap, m_BrightestPointRT, m_LookDevCubeToLatlong);
m_BrightestPointTexture.ReadPixels(new Rect(0f, 0f, (float) num, (float) num2), 0, 0, false);
m_BrightestPointTexture.Apply();
Color[] pixels = m_BrightestPointTexture.GetPixels();
float num3 = 0f;
for (int i = 0; i < num2; i++)
{
for (int j = 0; j < num; j++)
{
Vector3 vector = new Vector3(pixels[(i * num) + j].r, pixels[(i * num) + j].g, pixels[(i * num) + j].b);
float num6 = ((vector.x * 0.2126729f) + (vector.y * 0.7151522f)) + (vector.z * 0.072175f);
if (num3 < num6)
{
Vector2 vector2 = LookDevEnvironmentWindow.PositionToLatLong(new Vector2(((((float) j) / ((float) (num - 1))) * 2f) - 1f, ((((float) i) / ((float) (num2 - 1))) * 2f) - 1f));
cubemapInfo.shadowInfo.latitude = vector2.x;
cubemapInfo.shadowInfo.longitude = vector2.y - cubemapInfo.angleOffset;
num3 = num6;
}
}
}
}
}
public override void OnGUI(Rect rect) { GUILayout.BeginVertical(); { GUILayout.Label(styles.sEnvironment, EditorStyles.miniLabel); EditorGUI.BeginChangeCheck(); float angleOffset = EditorGUILayout.Slider(styles.sAngleOffset, m_CubemapInfo.angleOffset % 360.0f, -360.0f, 360.0f); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_LookDevView.envLibrary, "Changed environment settings"); m_CubemapInfo.angleOffset = angleOffset; m_LookDevView.envLibrary.dirty = true; m_LookDevView.Repaint(); } if (GUILayout.Button(styles.sResetEnv, EditorStyles.toolbarButton)) { Undo.RecordObject(m_LookDevView.envLibrary, "Changed environment settings"); m_CubemapInfo.ResetEnvInfos(); m_LookDevView.envLibrary.dirty = true; m_LookDevView.Repaint(); } using (new EditorGUI.DisabledScope(!m_LookDevView.config.enableShadowCubemap)) { DrawSeparator(); GUILayout.Label(styles.sShadows, EditorStyles.miniLabel); EditorGUI.BeginChangeCheck(); float shadowIntensity = EditorGUILayout.Slider(styles.sShadowIntensity, m_CubemapInfo.shadowInfo.shadowIntensity, 0.0f, 5.0f); Color shadowColor = EditorGUILayout.ColorField(styles.sShadowColor, m_CubemapInfo.shadowInfo.shadowColor); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_LookDevView.envLibrary, "Changed shadow settings"); m_CubemapInfo.shadowInfo.shadowIntensity = shadowIntensity; m_CubemapInfo.shadowInfo.shadowColor = shadowColor; m_LookDevView.envLibrary.dirty = true; m_LookDevView.Repaint(); } if (GUILayout.Button(styles.sBrightest, EditorStyles.toolbarButton)) { Undo.RecordObject(m_LookDevView.envLibrary, "Changed shadow settings"); LookDevResources.UpdateShadowInfoWithBrightestSpot(m_CubemapInfo); m_LookDevView.envLibrary.dirty = true; m_LookDevView.Repaint(); } if (GUILayout.Button(styles.sResetShadow, EditorStyles.toolbarButton)) { Undo.RecordObject(m_LookDevView.envLibrary, "Changed shadow settings"); m_CubemapInfo.SetCubemapShadowInfo(m_CubemapInfo); m_LookDevView.envLibrary.dirty = true; m_LookDevView.Repaint(); } } } GUILayout.EndVertical(); }