//private RenderTexture buff2; protected override void Init() { if (currentCamera == null) { currentCamera = GetComponent <Camera>(); } #if UNITY_2017_2_OR_NEWER UnityEngine.XR.XRSettings.eyeTextureResolutionScale = multiplier; #else UnityEngine.VR.VRSettings.renderScale = multiplier; #endif material_bl = new Material(bilinearshader); material_bc = new Material(bicubicshader); material_nn = new Material(neighborshader); material_def = new Material(defaultshader); Material_current = material_def; Material_old = Material_current; if (MadGoatSSAA_Utils.DetectSRP()) { SetupSRPCB(); } else { SetupStandardCB(); } }
private void OnEnable() { #if UNITY_EDITOR if (!UnityEditor.EditorApplication.isPlaying) { return; } #endif if (dbgData == null) { dbgData = new DebugData(this); } Init(); StartCoroutine(AdaptiveTask()); #if UNITY_2019_1_OR_NEWER && UNITY_POST_PROCESSING_STACK_V2 && (SSAA_HDRP || SSAA_LWRP) // only on SRP if (!MadGoatSSAA_Utils.DetectSRP()) { return; } //UnityEngine.Experimental.Rendering.RenderPipeline.BeginCameraRendering(GetComponent<Camera>()); UnityEngine.Experimental.Rendering.RenderPipeline.beginCameraRendering += OnBeginCameraRender; #elif UNITY_2018_1_OR_NEWER && UNITY_POST_PROCESSING_STACK_V2 && (SSAA_HDRP || SSAA_LWRP) // only on SRP if (!MadGoatSSAA_Utils.DetectSRP()) { return; } RenderPipeline.BeginCameraRendering(GetComponent <Camera>()); RenderPipeline.beginCameraRendering += OnBeginCameraRender; #endif }
// Events from main renderer public void OnMainRender() { // Set up camera for hdrp #if UNITY_2018_1_OR_NEWER && UNITY_POST_PROCESSING_STACK_V2 && SSAA_HDRP if (MadGoatSSAA_Utils.DetectSRP()) { HDAdditionalCameraData data = GetComponent <HDAdditionalCameraData>(); HDAdditionalCameraData dataMain = Main.GetComponent <HDAdditionalCameraData>(); if (data == null) { data = Current.gameObject.AddComponent <HDAdditionalCameraData>(); } data.clearColorMode = HDAdditionalCameraData.ClearColorMode.None; data.clearDepth = true; data.volumeLayerMask = 0; } #endif // set up command buffers if (MadGoatSSAA_Utils.DetectSRP()) { // for SRP UpdateCBSRP(); } else { // for legacy UpdateCB(); } }
public void OnMainDisable() { if (!MadGoatSSAA_Utils.DetectSRP()) { ClearCommand(CompositionCommand, CameraEvent.AfterImageEffects); } }
// Command buffer setup private void SetupCommand(CommandBuffer cb, CameraEvent evt) { // setup command cb.Clear(); cb.name = "SSAA_COMPOSITION"; // setup pass and blit RenderTargetIdentifier idBuff = new RenderTargetIdentifier(Main.targetTexture); cb.SetRenderTarget(BuiltinRenderTextureType.CameraTarget); cb.Blit(idBuff, BuiltinRenderTextureType.CameraTarget, MaterialCurrent, 0); // add to camera - todo hdrp var commands = new List <CommandBuffer>(Current.GetCommandBuffers(evt)); if (commands.Find(x => x.name == "SSAA_COMPOSITION") == null) { if (!MadGoatSSAA_Utils.DetectSRP()) { Current.AddCommandBuffer(evt, cb); } else { // --- Prep for v2 native HDRP support // Injection into render context goes here } } }
public override void OnInspectorGUI() { SetupStyles(); // Update the serializedProperty - always do this in the beginning of OnInspectorGUI. serObj.Update(); EditorGUILayout.Separator(); GUI.backgroundColor = new Color(.4f, .4f, .4f, 1); GUILayout.Label("MadGoat SuperSampling", accent_style); GUI.backgroundColor = new Color(1, 1, 1, 1); //GUILayout.Label(Title, accent_style); //EditorGUILayout.Separator(); if (MadGoatSSAA_Utils.DetectSRP()) { EditorGUILayout.HelpBox("SRP support is currently in beta, and will stay so until Unity SRP system releases as a \"stable\" version. Please read the notes below first!!!", MessageType.Error); if (GUILayout.Button("SSAA on SRP Readme")) { Application.OpenURL("https://drive.google.com/open?id=1gSpTziE5woQ53tTmlailiukkNZIej1CAqWA43yjJ_LY"); } //EditorGUILayout.Separator(); //EditorGUILayout.Separator(); //EditorGUILayout.HelpBox("(HDRP BETA) \nEnable this if the image gets flipped upside down when using HDRP pipeline. The issues is currently investigated", MessageType.Error); //flipImageFix.boolValue = EditorGUILayout.Toggle("Fix HDRP image flipping", flipImageFix.boolValue); EditorGUILayout.Separator(); EditorGUILayout.Separator(); } samplingTab = GUILayout.Toolbar(samplingTab, new string[] { "SSAA", "Screenshot", "Misc" }); EditorGUILayout.Separator(); DrawHeader(new string[] { "Super Sampling Settings", "Screenshot Settings", "Misc Settings" }[samplingTab]); EditorGUILayout.Separator(); EditorGUILayout.Separator(); switch (samplingTab) { case 0: DrawTab1(); break; case 1: DrawTab2(); break; case 2: DrawTab3(); break; } normal_style.fontSize = 9; EditorGUILayout.Separator(); GUILayout.Label("Version: " + MadGoatSSAA_Utils.ssaa_version, normal_style); normal_style.fontSize = 16; // Apply modifications serObj.ApplyModifiedProperties(); }
public void OnMainDisable() { if (!MadGoatSSAA_Utils.DetectSRP()) { if ((new List <CommandBuffer>(Current.GetCommandBuffers(CameraEvent.AfterEverything))).Find(x => x.name == "SSAA_COMPOSITION") != null) { Current.RemoveCommandBuffer(CameraEvent.AfterEverything, CopyCB); } copyCB.Clear(); } }
protected override void OnBeginCameraRender(Camera cam) { if (cam != currentCamera || !enabled) { return; } #if UNITY_EDITOR if (!UnityEditor.EditorApplication.isPlaying) { return; } #endif try { // Handle the resolution multiplier #if UNITY_2017_2_OR_NEWER if (!UnityEngine.XR.XRDevice.isPresent) { throw new Exception("VRDevice not present or not detected"); } UnityEngine.XR.XRSettings.eyeTextureResolutionScale = multiplier; #else if (!UnityEngine.VR.VRDevice.isPresent) { throw new Exception("VRDevice not present or not detected"); } UnityEngine.VR.VRSettings.renderScale = multiplier; #endif // Change the material by the filter type ChangeMaterial(filterType); // Update the materials properties if (MadGoatSSAA_Utils.DetectSRP()) { UpdateSRPCB(); } else { UpdateSdanrdardCB(); } } catch (Exception ex) { Debug.LogError("Something went wrong. SSAA has been set to off and the plugin was disabled"); Debug.LogError(ex); SetAsSSAA(SSAAMode.SSAA_OFF); enabled = false; } }
// Events from main behaviour public void OnMainEnable() { mainComponent = Main.GetComponent <MadGoatSSAA>(); MaterialCurrent = materialDefault; if (MadGoatSSAA_Utils.DetectSRP()) { SetupCBSRP(); } else { SetupCommand(CompositionCommand, CameraEvent.AfterImageEffects); } }
private void SetupCBSRP() { #if UNITY_2018_1_OR_NEWER && UNITY_POST_PROCESSING_STACK_V2 && SSAA_HDRP // setup post processing on internal camera // get the first empty render layer #if UNITY_EDITOR MadGoatSSAA_Utils.GrabRenderLayer(); #endif gameObject.layer = LayerMask.NameToLayer("SSAA_RENDER"); PostProcessLayer pl; SphereCollider trigger; if ((pl = GetComponent <PostProcessLayer>()) == null) { pl = gameObject.AddComponent <PostProcessLayer>(); pl.volumeLayer = 1 << LayerMask.NameToLayer("SSAA_RENDER"); pl.volumeTrigger = transform; } if ((PostVolume = GetComponent <PostProcessVolume>()) == null) { PostVolume = gameObject.AddComponent <PostProcessVolume>(); PostVolume.isGlobal = false; } if (!PostVolume.sharedProfile) { PostVolume.sharedProfile = ScriptableObject.CreateInstance <PostProcessProfile>(); } if (PostVolume.sharedProfile.settings.Count == 0) { PostVolume.sharedProfile.AddSettings <SsaaSamplingUber>(); Debug.Log("z"); } if ((trigger = gameObject.GetComponent <SphereCollider>()) == null) { trigger = gameObject.AddComponent <SphereCollider>(); trigger.isTrigger = true; trigger.radius = 0.0001f; } // determine if flipping is required? HDRP #endif }
// Events from main behaviour public void OnMainEnable() { mainComponent = Main.GetComponent <MadGoatSSAA>(); material_bl = new Material(bilinearshader); material_bc = new Material(bicubicshader); material_nn = new Material(neighborshader); material_def = new Material(defaultshader); Material_current = material_def; if (MadGoatSSAA_Utils.DetectSRP()) { SetupCBSRP(); } else { SetupCB(); } }
private void OnDisable() { #if UNITY_EDITOR if (!UnityEditor.EditorApplication.isPlaying) { return; } #endif // Handle VR device cleaning #if UNITY_2017_2_OR_NEWER UnityEngine.XR.XRSettings.eyeTextureResolutionScale = 1f; #else UnityEngine.VR.VRSettings.renderScale = 1f; #endif // Handle cleaning if (MadGoatSSAA_Utils.DetectSRP()) { ClearSRPCB(); } else { ClearStandardCB(); } // Handle SRP render event cleaning #if UNITY_2019_1_OR_NEWER && UNITY_POST_PROCESSING_STACK_V2 && (SSAA_HDRP || SSAA_LWRP) // only on SRP if (!MadGoatSSAA_Utils.DetectSRP()) { return; } UnityEngine.Experimental.Rendering.RenderPipeline.beginCameraRendering -= OnBeginCameraRender; #elif UNITY_2018_1_OR_NEWER && UNITY_POST_PROCESSING_STACK_V2 && (SSAA_HDRP || SSAA_LWRP) // only on SRP if (!MadGoatSSAA_Utils.DetectSRP()) { return; } RenderPipeline.beginCameraRendering -= OnBeginCameraRender; #endif }
private void ClearCommand(CommandBuffer cb, CameraEvent evt) { // clear command cb.Clear(); // remove from camera var commands = new List <CommandBuffer>(Current.GetCommandBuffers(evt)); if (commands.Find(x => x.name == "SSAA_COMPOSITION") != null) { if (!MadGoatSSAA_Utils.DetectSRP()) { Current.RemoveCommandBuffer(evt, cb); } else { // --- Prep for v2 native HDRP support // Injection into render context goes here } } }
private void SetupSRPCB() { #if UNITY_2018_1_OR_NEWER && UNITY_POST_PROCESSING_STACK_V2 && (SSAA_HDRP || SSAA_LWRP) // Setup SRP CB processVolumeObject = new GameObject("RenderCameraObject"); processVolumeObject.transform.SetParent(transform); processVolumeObject.transform.position = Vector3.zero; processVolumeObject.transform.rotation = new Quaternion(0, 0, 0, 0); processVolumeObject.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector; processVolume = processVolumeObject.AddComponent <PostProcessVolume>(); processVolume.sharedProfile = ScriptableObject.CreateInstance <PostProcessProfile>(); processVolume.sharedProfile.AddSettings <SsaaVRSamplingUber>(); processVolume.isGlobal = true; // get the first empty render layer #if UNITY_EDITOR MadGoatSSAA_Utils.GrabRenderLayer(); #endif oldPostLayer = GetComponent <PostProcessLayer>().volumeLayer; GetComponent <PostProcessLayer>().volumeLayer |= 1 << LayerMask.NameToLayer("SSAA_RENDER"); processVolumeObject.layer = LayerMask.NameToLayer("SSAA_RENDER"); #endif }