Ombre non visible sur shader blanc

Questions à propos du scripting Shader.
Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Ombre non visible sur shader blanc

Message par freepl » 10 Oct 2014 07:40

Bonjour

J'utilise un shader pour faire ressortir des mesh représentant le marquage routier de la chaussée.
Mais les ombres n'apparraissent pas dessus.

Comment y remédier ?

Merci

code du shader

Code : Tout sélectionner

Shader "Custom/Z-fighting_image_dessus_Marquage_sol" {
	Properties {
 _MainTex ("Texture", 2D) = ""
 }
 Subshader
 {
 //Ztest Always
 Tags { Queue = Geometry}
 Pass
 {
 Offset -1,-20
 SetTexture[_MainTex] {Combine texture Double}
 }
 }
 }
 
 
 // offset  permet d'enlever l'effet de scintillement
//Réactiver Ztest pour que l'objet soit devant
//MAIS il est TOUJOURS devant TOUS les objets !!

Image
Ombre non visible sur le marquage blanc

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6208
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Ombre non visible sur shader blanc

Message par boubouk50 » 10 Oct 2014 09:28

Ton shader n'inclut pas la lumière. Il te faut prendre un shader de diffus (la base) et ajouter à celui-ci la ligne [b]Offset -1,-20[/b] présente dans le shader que tu utilises. C'est cette ligne qui te permet de corriger le Z-Fighting
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Ombre non visible sur shader blanc

Message par freepl » 10 Oct 2014 10:08

salut

J'ai compris mais je ne sais pas comment récupérer le shader de Diffus dans Inspector.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Ombre non visible sur shader blanc

Message par Alesk » 10 Oct 2014 10:22

Non là il te dit de récupérer le code source d'un shader et de le bidouiller à ta sauce.

Tu peux trouver le code source de toutes les versions des shaders par défaut d'unity ici : https://unity3d.com/unity/download/archive
(Colonne Built-in shaders)

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6208
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Ombre non visible sur shader blanc

Message par boubouk50 » 10 Oct 2014 10:23

http://answers.unity3d.com/questions/84 ... aders.html
http://forum.unity3d.com/threads/builti ... urce.2085/

essaie ça, je n'ai pas vérifié mais c'est sensé être OK.

(trop lent)
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Ombre non visible sur shader blanc

Message par freepl » 10 Oct 2014 10:25

Merci à vous 2.

J'avais compris que je devais bidouiller le code mais je ne savais pas comment y accéder

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Ombre non visible sur shader blanc

Message par freepl » 18 Oct 2014 17:06

Bonjour

J'ai eu le temps der écupérer le shader Diffuse

Code : Tout sélectionner

Shader "Diffuse" {
Properties {
	_Color ("Main Color", Color) = (1,1,1,1)
	_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
	Tags { "RenderType"="Opaque" }
	LOD 200

CGPROGRAM
#pragma surface surf Lambert

sampler2D _MainTex;
fixed4 _Color;

struct Input {
	float2 uv_MainTex;
};

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

Fallback "VertexLit"
}
Boubouk50 tu me dis de mettre cette ligne ( offset -1, -20 ).
Mais dans mon shader perso, cette ligne ce trouve ici dans la partie PASS

Code : Tout sélectionner

Shader "Custom/Z-fighting_image_dessus_Marquage_sol" {
	Properties {
 _MainTex ("Texture", 2D) = ""
 }
 Subshader
 {
 //Ztest Always
 Tags { Queue = Geometry}
 Pass
 {
 Offset -1,-20
 SetTexture[_MainTex] {Combine texture Double}
 }
 }
 }
 }
Dois-je mettre QUE la ligne ou bien TOUT le passage de Pass ?

Merci

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6208
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Ombre non visible sur shader blanc

Message par boubouk50 » 20 Oct 2014 09:41

Tu peux l'insérer ici:
...SubShader {
Offset -1,-1 //change le Z du Z-test et Z-Depth
Tags { "RenderType"="Opaque" }...
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Ombre non visible sur shader blanc

Message par freepl » 20 Oct 2014 10:01

Merci

Répondre

Revenir vers « les Shaders »