private void RenderCubemap(Texture t, Vector2 previewDir, float previewDistance, float exposure)
{
m_PreviewUtility.camera.transform.position = -Vector3.forward * previewDistance;
m_PreviewUtility.camera.transform.rotation = Quaternion.identity;
Quaternion rot = Quaternion.Euler(previewDir.y, 0, 0) * Quaternion.Euler(0, previewDir.x, 0);
m_Material.mainTexture = t;
m_Material.SetMatrix(s_ShaderCubemapRotation, Matrix4x4.TRS(Vector3.zero, rot, Vector3.one));
// -1 indicates "use regular sampling"; mips 0 and larger sample only that mip level for preview
float mipLevel = GetMipLevelForRendering(t);
m_Material.SetFloat(s_ShaderMip, mipLevel);
m_Material.SetFloat(s_ShaderAlpha, (m_PreviewType == PreviewType.Alpha) ? 1.0f : 0.0f);
m_Material.SetFloat(s_ShaderIntensity, m_Intensity);
m_Material.SetFloat(s_ShaderIsNormalMap, TextureInspector.IsNormalMap(t) ? 1.0f : 0.0f);
m_Material.SetFloat(s_ShaderExposure, exposure);
if (PlayerSettings.colorSpace == ColorSpace.Linear)
{
m_Material.SetInt("_ColorspaceIsGamma", 0);
}
else
{
m_Material.SetInt("_ColorspaceIsGamma", 1);
}
m_PreviewUtility.DrawMesh(m_Mesh, Vector3.zero, rot, m_Material, 0);
m_PreviewUtility.Render();
}