Example #1
0
        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;
            }
        }
Example #2
0
        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;
            }
        }
Example #3
0
        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));
            }
        }