Re, je reviens vers vous car je bloque sur un truc, alors ça fait 2 jours que je regarde les shaders et ce que vous m'avez donné ma aidé énormément.
Alors pour faire court j'ai utilisé le même procédé du 1er lien de Max (
https://assetstore.unity.com/packages/e ... 01#content)
Tout marche parfaitement et comme je voulais (enfin oui et non car il ne le fait que verticalement mais osef de sa je règlerai ce problème plus tard, mais j'ai un petit souci alors je vais être concis, pour utiliser l'effet je dois mettre le shader (material) sur chaque GameObject or sur certains de mes GameObject je dois mettre une certaine couleur comme par exemple la route où je met une nouvelle couleur à chaque fois :
Ici pour chaque route (qui fait ~12 scale en x) je lui met soit une couleur soit le shader (les deux en même temps ne marche pas la route est toujours blanche)
Code : Tout sélectionner
public Material matCurved;
.....
......
//Dans une fonction:
//comp == route
rendRoad = comp.GetComponent<MeshRenderer>();
//Couleur de chaque route
rendRoad.material.SetColor("_Color", Color.HSVToRGB(colorRoad, 1, 1));
//Le shader
//rendRoad.material = matCurved;
Voici les exemples:
Si je décommente le 1er (ici le ciel utilise la couleur de la route la plus devant):
Code : Tout sélectionner
rendRoad.material.SetColor("_Color", Color.HSVToRGB(colorRoad, 1, 1));
![f1.PNG](./download/file.php?id=1915&sid=3eec7b6687a5d506147763233ec831cc)
- f1.PNG (15.91 Kio) Consulté 2143 fois
Si je décommente le 2ème (ici le ciel utilise la couleur de la route la plus devant donc blanc):
![f2.PNG](./download/file.php?id=1916&sid=3eec7b6687a5d506147763233ec831cc)
- f2.PNG (12.43 Kio) Consulté 2143 fois
Voilà où j'en suis le shader marche bien or moi j'aimerais bien pouvoir mettre des couleurs sur mes objets
ps: j'ai déjà essayé de mettre une couleur avec le shader:
1)Je n'arrive pas à l'utiliser avec l'effet curved
2)La couleur avec le shader est fade et pas belle
J'aimerais donc savoir s'il était possible de mettre un shader et une couleur sur un objet (j'aimerais utiliser le SetColor() comme dans le bout de code)
Voila le shader:
CurvedUnlit.shader
Code : Tout sélectionner
Shader "Unlit/CurvedUnlit"
{
Properties
{
_MainTex("Texture", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType" = "Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog
#include "CurvedCode.cginc"
ENDCG
}
}
}
CurvedCode.cginc
Code : Tout sélectionner
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
float4 color : COLOR;
};
struct v2f
{
float2 uv : TEXCOORD0;
UNITY_FOG_COORDS(1)
float4 color : TEXCOORD2;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float _CurveStrength;
v2f vert(appdata v)
{
v2f o;
float _Horizon = 100.0f;
float _FadeDist = 50.0f;
o.vertex = UnityObjectToClipPos(v.vertex);
float dist = UNITY_Z_0_FAR_FROM_CLIPSPACE(o.vertex.z);
o.vertex.y -= _CurveStrength * dist * dist * _ProjectionParams.x;
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
o.color = v.color;
UNITY_TRANSFER_FOG(o, o.vertex);
return o;
}
fixed4 frag(v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv) * i.color;
// apply fog
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
Merciiiiiiiiiiiiiii
![Dan.San :taré1:](./images/smilies/126.gif)