Search Unity

  1. We are migrating the Unity Forums to Unity Discussions. On July 12, the Unity Forums will become read-only. On July 15, Unity Discussions will become read-only until July 18, when the new design and the migrated forum contents will go live. Read our full announcement for more information and let us know if you have any questions.

Changing Tonemapping at runtime through C#

Discussion in 'Image Effects' started by Oscerlot, Aug 18, 2020.

  1. Oscerlot

    Oscerlot

    Joined:
    Nov 23, 2013
    Posts:
    4
    Hello,

    I'm making an in-game level editor and I'm offering the ability to adjust the post processing per level. I'm accessing the PostProcessVolume and using TryGetSettings<>. I've been able to successfully use this for all settings (Bloom, AO, etc), but I can't get this working for Tonemapping.

    Trying to use TryGetSettings<Tonemapper>(), or any other way to grab it results in:

    "There is no boxing conversion from 'UnityEngine.Rendering.PostProcessing.Tonemapper' to 'UnityEngine.Rendering.PostProcessing.PostProcessEffectSettings'

    I understand why I'm getting this error, but I don't quite understand why there isn't a PostProcessEffectSettings for Tonemapping, or if there is, is it going by some other name which I'm not picking up on?

    So, in summary, how do I toggle and change the Tonemapping setting on a Post Process Volume at runtime?

    Thanks!

    (Using 2019.3.10f1 and URP 7.3.1 with forward rendering)
     
  2. Oscerlot

    Oscerlot

    Joined:
    Nov 23, 2013
    Posts:
    4
    For anyone looking in the future, I figured it out.
    Turns out I was using the wrong kind of method of grabbing the post processing info.

    I was meant to be using "UnityEngine.Rendering.Universal" instead of "UnityEngine.Rendering.PostProcessing"

    I switched it to that, and got the profile using "UnityEngine.Rendering.VolumeProfile"

    Had a "Tonemapping tonemappingRef"

    Used "TryGet (out tonemappingRef)"

    Then I was able to edit the settings by calling "tonemappingRef.mode.value = TonemappingMode.ACES"


    Found that out thanks to this thread I stumbled upon
    https://forum.unity.com/threads/urp...erride-settings-at-runtime-via-script.813093/
     
    aliasgar5253 likes this.