Page 1 sur 1

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

Publié : 21 Août 2022 21:50
par jmhoubre
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.

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

Publié : 25 Août 2022 09:18
par DevAmat
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.