[Résolu] Fixer par code le postprocessing d'une caméra

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

[Résolu] Fixer par code le postprocessing d'une caméra

Message par jmhoubre » 21 Août 2022 21:50

Bonsoir,

j'ai souhaité vérifier que les caméras d'une scène avaient bien la case Post Processing cochée (dans la section Renderer). En l'absence de propriété identifiée, j'ai cherché sur les forums anglophones et la solution était dans la classe UniversalAdditionalCameraData (le mystérieux script ajouté par Unity à chaque caméra d'un projet avec URP).

Code : Tout sélectionner

// Liste les caméras de la scène.
Camera[] camerasArray= Component.FindObjectsOfType<Camera> ();

// Teste si le projet utilise URP (voir un de mes posts précédents).
Type RenderPipelineType = GraphicsSettings.defaultRenderPipeline.GetType ();
Type URPType = typeof (UniversalRenderPipelineAsset);
bool urp = RenderPipelineType.Equals (URPType);

RenderPipelineAsset currentRP = GraphicsSettings.defaultRenderPipeline;
print ("currentRenderPipeline : " + GraphicsSettings.currentRenderPipeline.name);

foreach (Camera camera in camerasArray)
{
	camera.targetDisplay = 0;
	if (urp)
	{
		UniversalAdditionalCameraData cameraData = camera.GetUniversalAdditionalCameraData ();
		cameraData.renderPostProcessing = true;
	}
}
Testé avec 2021.3 et URP 12.1.

Avatar de l’utilisateur
DevAmat
Messages : 435
Inscription : 23 Nov 2016 11:50

Re: [Résolu] Fixer par code le postprocessing d'une caméra

Message par DevAmat » 25 Août 2022 09:18

Merci pour le partage :super: .

C'est aussi via ce "component" que l'on a accès notament aux informations sur la résolution dynamique (DLSS, Fidelity FX etc.) et plein d'autres choses sur la camera.
Et c'est pas toujours évident de trouver l'information.

Répondre

Revenir vers « Scripting »