[RESOLU] Custom SurfaceOutput non reconnu par mon custom lighting

Questions à propos du scripting Shader.
Avatar de l’utilisateur
MrBub
Messages : 8
Inscription : 04 Juil 2019 18:56

[RESOLU] Custom SurfaceOutput non reconnu par mon custom lighting

Message par MrBub » 04 Juil 2019 20:06

Bonjour à tous, je me tourne vers vous car j'ai un petit souci !
Je débute en shader, je me penchais sur le bouquin Unity 2018 Shaders and Effects Cookbook, il propose ce script que j'ai largement simplifié pour ne garder que les infos qui me semblent importantes pour mon problème.

Code : Tout sélectionner

Shader "Custom/AnisoTest"
{
        #pragma surface surf Anisotropic
        
	fixed4 LightingAnisotropic ( SurfaceAnisoOutput s, fixed3 lightDir, half3 viewDir, fixed Atten){
		//Some Code
	}

	struct SurfaceAnisoOutput{
		//Some code
	};

        void surf (Input IN, inout SurfaceAnisoOutput o){
        	//Some Code
        }
        ENDCG
    }
}
Seulement voila, pour la ligne :

Code : Tout sélectionner

fixed4 LightingAnisotropic ( SurfaceAnisoOutput s, fixed3 lightDir, half3 viewDir, fixed Atten){
Unity me sort cette erreur :
Unexpected identifier "SurfaceAnisoOutput". Expected: ')'
Si je remplace le SurfaceAnisoOutput par le standard SurfaceOutput je n'ai plus un tel souci.
Comment lui faire comprendre qu'il doit se servir de ma nouvelle structure, et non pas de celle de base ? :\

Merci énormément pour le coup de pouce, si vous avez une idée, je n'ai pas trouvé la solution à ce problème.
Dernière édition par MrBub le 05 Juil 2019 13:24, édité 1 fois.

Avatar de l’utilisateur
Max
Newser
Newser
Messages : 7842
Inscription : 30 Juil 2011 13:57

Re: Custom SurfaceOutput non reconnu par mon custom lighting

Message par Max » 04 Juil 2019 20:25

Bonsoir,

il faudrait déclarer la structure dans le code avant son emploi dans une fonction.
Donc:

Code : Tout sélectionner

Shader "Custom/AnisoTest"
{
        #pragma surface surf Anisotropic

	struct SurfaceAnisoOutput{
		//Some code
	};
	        
	fixed4 LightingAnisotropic ( SurfaceAnisoOutput s, fixed3 lightDir, half3 viewDir, fixed Atten){
		//Some Code
	}

        void surf (Input IN, inout SurfaceAnisoOutput o){
        	//Some Code
        }
        ENDCG
    }
}
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
MrBub
Messages : 8
Inscription : 04 Juil 2019 18:56

Re: Custom SurfaceOutput non reconnu par mon custom lighting

Message par MrBub » 05 Juil 2019 13:24

Haha super, merci beaucoup, je crois qu'il va y avoir pas mal de taff avant que je ne puisse aider qui que ce soit à mon tour !

Répondre

Revenir vers « les Shaders »