void InitPreviewUtility() { if (m_PreviewUtility == null) { m_PreviewUtility = new PreviewRenderUtility(); m_PreviewUtility.camera.fieldOfView = 30.0f; m_Preview3DMode = Preview3DMode.Volume; m_Texture = target as Texture3D; m_PreviewDir = new Vector2(0, 0); m_Channels = Mathf.Clamp(GraphicsFormatUtility.GetColorComponentCount(m_Texture.graphicsFormat), 1, 3); CalculateResolutionAndScale(m_Texture); m_ViewDistance = Mathf.Lerp(1, 3, Mathf.Clamp01(m_Scale.magnitude - 0.414f)); m_PreviewUtility.camera.farClipPlane = s_MaxViewDistance + 1; m_PreviewUtility.camera.nearClipPlane = 0.01f; } }
public override void OnPreviewSettings() { if (!ShaderUtil.hardwareSupportsRectRenderTexture || !SystemInfo.supports3DTextures) { return; } GUI.enabled = true; switch (m_Preview3DMode) { case Preview3DMode.Volume: m_Ramp = GUILayout.Toggle(m_Ramp, Styles.ramp, EditorStyles.toolbarButton); m_QualityModifier = PreviewSlider(Styles.quality, m_QualityModifier, 0.5f, 8, s_SliderWidth, s_FloatWidth); m_MaxAlpha = PreviewSlider(Styles.alpha, m_MaxAlpha, 0.01f, 1, s_SliderWidth, s_FloatWidth); break; case Preview3DMode.Slice: m_Ramp = GUILayout.Toggle(m_Ramp, Styles.ramp, EditorStyles.toolbarButton); m_Slice.x = Mathf.Clamp(PreviewFloatField(Styles.x, m_Slice.x, s_FloatWidth), 0, m_Texture.width); m_Slice.y = Mathf.Clamp(PreviewFloatField(Styles.y, m_Slice.y, s_FloatWidth), 0, m_Texture.height); m_Slice.z = Mathf.Clamp(PreviewFloatField(Styles.z, m_Slice.z, s_FloatWidth), 0, m_Texture.depth); break; case Preview3DMode.SDF: m_StepScale = PreviewFloatField(Styles.scale, m_StepScale, s_FloatWidth); m_SurfaceOffset = PreviewFloatField(Styles.offset, m_SurfaceOffset, s_FloatWidth); break; default: throw new ArgumentException($"Unexpected \"Preview3DMode\" value: \"{m_Preview3DMode}\""); } if (GUILayout.Toggle(m_Preview3DMode == Preview3DMode.Volume, Styles.volume, EditorStyles.toolbarButton)) { m_Preview3DMode = Preview3DMode.Volume; } if (GUILayout.Toggle(m_Preview3DMode == Preview3DMode.Slice, Styles.slice, EditorStyles.toolbarButton)) { m_Preview3DMode = Preview3DMode.Slice; } if (GUILayout.Toggle(m_Preview3DMode == Preview3DMode.SDF, Styles.sdf, EditorStyles.toolbarButton)) { m_Preview3DMode = Preview3DMode.SDF; } }
void InitPreviewUtility() { if (m_PreviewUtility == null) { m_PreviewUtility = new PreviewRenderUtility(); m_PreviewUtility.camera.fieldOfView = 30.0f; m_Preview3DMode = Preview3DMode.Volume; m_Texture = target as Texture3D; m_PreviewDir = new Vector2(0, 0); float inverseResolution; Vector3 scale = VoxelSize(GetTextureResolution(m_Texture), out inverseResolution); m_ViewDistance = Mathf.Lerp(1, 3, Mathf.Clamp01(scale.magnitude - 0.414f)); m_PreviewUtility.camera.farClipPlane = s_MaxViewDistance * 2 + 1; m_PreviewUtility.camera.nearClipPlane = 0.1f; m_QualityModifier = Mathf.Clamp(8 - Mathf.Log(1.0f / inverseResolution, 2), 1, 8); m_Slice = Vector3.Scale(Vector3.one / 2, new Vector3(m_Texture.width, m_Texture.height, m_Texture.depth)); } }