Toon shader avec diffuse alpha?

Questions à propos du scripting Shader.
Shigeryuken
Messages : 25
Inscription : 24 Juin 2012 15:44
Contact :

Toon shader avec diffuse alpha?

Message par Shigeryuken » 14 Mai 2013 02:03

Bonsoir,

J'aurais besoin d'aide pour un petit projet de jeu, j'utilise pour se jeu le rendu toon lighted.
Seulement voilà, dans certains de mes objet 3d leurs diffuse on normalement des endrois qui devrait être transparent, et apparement le shader toon ne gère pas ça :/ tout comme les 2 face de mes objets ne sont pas texturé, comme sur cette image :

Image

Quelqu'un à une idée? Merci d'avance !

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Toon shader avec diffuse alpha?

Message par Max » 14 Mai 2013 09:17

Shigeryuken a écrit :j'utilise pour se jeu le rendu toon lighted.
Seulement voilà, dans certains de mes objet 3d leurs diffuse on normalement des endrois qui devrait être transparent, et apparement le shader toon ne gère pas ça :/ tout comme les 2 face de mes
pour ces éléments qui doivent être en 2Sides avec un rendu alpha, tu peux simplement modifier le shader ToonLighted légèrement, comme ça:
(A tester et à adapter selon tes besoins)

Code : Tout sélectionner

Shader "Toon/LightedAlpha2Sides" {
	Properties {
		_Color ("Main Color", Color) = (0.5,0.5,0.5,1)
		_MainTex ("Base (RGB)", 2D) = "white" {}
		_Ramp ("Toon Ramp (RGB)", 2D) = "gray" {} 
	}

	SubShader {
		Tags { "RenderType" = "Transparent" "Queue" = "Transparent" }	
		Cull Off
		LOD 200
		
CGPROGRAM
#pragma surface surf ToonRamp alpha

sampler2D _Ramp;

// custom lighting function that uses a texture ramp based
// on angle between light direction and normal
#pragma lighting ToonRamp exclude_path:prepass
inline half4 LightingToonRamp (SurfaceOutput s, half3 lightDir, half atten)
{
	#ifndef USING_DIRECTIONAL_LIGHT
	lightDir = normalize(lightDir);
	#endif
	
	half d = dot (s.Normal, lightDir)*0.5 + 0.5;
	half3 ramp = tex2D (_Ramp, float2(d,d)).rgb;
	
	half4 c;
	c.rgb = s.Albedo * _LightColor0.rgb * ramp * (atten * 2);
	c.a = 0;
	return c;
}


sampler2D _MainTex;
float4 _Color;

struct Input {
	float2 uv_MainTex : TEXCOORD0;
};

void surf (Input IN, inout SurfaceOutput o) {
	half4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
	o.Albedo = c.rgb;
	o.Alpha = c.a;
}
ENDCG

	} 

	Fallback "Diffuse"
}

Image
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

Shigeryuken
Messages : 25
Inscription : 24 Juin 2012 15:44
Contact :

Re: Toon shader avec diffuse alpha?

Message par Shigeryuken » 14 Mai 2013 14:40

Merci pour votre aide Max !

C'est presque ça apparement, seulement j'y connait strictement rien en code :( j'ai editer le shader à l'aide de votre script et voici le résultat :

Image

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Toon shader avec diffuse alpha?

Message par Max » 14 Mai 2013 15:57

La chanel alpha de ta couleur de feuille est-il bien au max (255) ?
Image
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

Shigeryuken
Messages : 25
Inscription : 24 Juin 2012 15:44
Contact :

Re: Toon shader avec diffuse alpha?

Message par Shigeryuken » 14 Mai 2013 19:41

Je pense oui, je vois ça ou?
Car j'ai se bug avec tout mes models qui utilise le shader modiffié, quelques soit la diffuse :(

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Toon shader avec diffuse alpha?

Message par Max » 14 Mai 2013 20:05

oui, je parlais de la couleur diffuse.
Si c'est possible, fait un zip avec le prefab de ton arbre avec ses textures, je regarderais de plus près ;)
Image
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

Shigeryuken
Messages : 25
Inscription : 24 Juin 2012 15:44
Contact :

Re: Toon shader avec diffuse alpha?

Message par Shigeryuken » 14 Mai 2013 20:34

Oui je te remerci d'avance :)

Je vous ai MP pour le cocotier.

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Toon shader avec diffuse alpha?

Message par Max » 14 Mai 2013 20:45

Bon, j'avais 5 min, finalement je viens de regarder. Je comprend un peu mieux

2 choses:

-Déjà, sur ta texture, dans l'inspector décoche l'option Alpha from Grayscale (puis Apply bien sûr)
Cela ira déjà mieux.
- En suite, il te faut dans ce cas aussi séparer le tronc des feuilles, car forcement pour le tronc tu auras un soucis, surtout au niveau du culling.
(on le voit à la base du tronc). Donc pour le tronc, il te faut rester sur le toon lighted natif....
Image
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

Shigeryuken
Messages : 25
Inscription : 24 Juin 2012 15:44
Contact :

Re: Toon shader avec diffuse alpha?

Message par Shigeryuken » 14 Mai 2013 20:58

Ah oui j'avais coché Alpha from Grayscale :/ Merci lol !

pour le reste je vais voir en tout cas merci beaucoup pour ton aide très précieuse ;)
Dit quesque tu appel le culling?
Je pense que je devrais plutôt utiliser un autre shader car tout mes autres model avec le shader tonnlighted modifier j'ai des bugs d'affichage (sans le grayscal de cocher pour mes diffuses) je devrais donc editer se shader "Toon basic" non?

Edit : en effet c'est beaucoup mieux avec le shader toon basic ;) manque plus que la transparence.

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Toon shader avec diffuse alpha?

Message par Max » 14 Mai 2013 21:11

Shigeryuken a écrit :Dit quesque tu appel le culling?
extrait de la doc http://docs.unity3d.com/Documentation/C ... Depth.html
Cull Back | Front | Off
Controls which sides of polygons should be culled (not drawn)
Back Don't render polygons facing away from the viewer (default).
Front Don't render polygons facing towards the viewer. Used for turning objects inside-out.
Off Disables culling - all faces are drawn. Used for special effects.
Pour résumer, le culling est un ensemble de techniques permettant d'élimer les faces qui ne sont pas visibles (pour diverses raisons).
Dans notre cas, on parle de backface culling, qui permet l'élimination des faces qui "tournent le dos" à la caméra et que l'on n'est pas censé voir.
Pour les feuilles par exemple, on va supprimer cette possibilité, vue qu'il s'agit d'un élément 'plat'. Il faut donc pouvoir les voire quelques soit
la position de la camera (au dessus comme au dessous). Pour ce qui est du tronc par contre, qui est un objet 'creux' fermé, à l'inverse cela
peu produire quelques artéfacts lors du rendu, et accessoirement en plus amener à un render de faces qui n'ont pas vraiment lieu d'être..

;)
Image
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

Répondre

Revenir vers « les Shaders »