Orario: 19-05-2013, 5:29 Benvenuto ospite! (Log inRegistrati)


Rispondi 
Shader: unlit con texture e colore
Autore Messaggio
Tanius
uno di quelli °_°

Messaggi: 214
Registrato: Jan 2012
Offline Offline
#1 Shader: unlit con texture e colore
0
Salve gente,

Apro sto topico per tirar fuori tutta la mia niubbagine in fatto di shaders.
Sto cercando di fare una cosa che (dovrebbe) essere banale, ma data la mia scarsa esperienza su sto campo mi rivolgo umilmente a voi.

Semplicemente vorrei poter definire uno shader che piazza una texture con alpha sopra ad un colore. In altre parole un semplice compositing di due livelli, quello più in alto con una texture, quello di sotto con un colore...

E' una cosa fattibile?

Claudio Calabrese,
[self release];


[Immagine: 6oddbof][Immagine: 7sjecyp][Immagine: 6ucbq6f][Immagine: 8yespzc]
01-04-2012 21:15
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
_tommo_
Mod nerdcore

Messaggi: 5,872
Registrato: Nov 2008
Offline Offline
#2 RE: Shader: unlit con texture e colore
0
Sono arrugginito con gli shader, ma assumendo HLSL/Cg, nel pixel shader fai:

Codice:
float4 tex = tex2D( textureSampler, in.UV );
out.color = in.vertexColor * (1.f-tex.a) + tex * tex.a;

Questo assumendo che il colore cel'hai nel vertexcolor Sisi

Tommaso Checchi
< devlog | twitter | Dojo, a C++ game framework >
02-04-2012 18:50
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Tanius
uno di quelli °_°

Messaggi: 214
Registrato: Jan 2012
Offline Offline
#3 RE: Shader: unlit con texture e colore
0
(02-04-2012 18:50)_tommo_ ha scritto:  Sono arrugginito con gli shader, ma assumendo HLSL/Cg, nel pixel shader fai:

Codice:
float4 tex = tex2D( textureSampler, in.UV );
out.color = in.vertexColor * (1.f-tex.a) + tex * tex.a;

Questo assumendo che il colore cel'hai nel vertexcolor Sisi

Si questo l'avevo risolto, ma grazie comunque Occhiolino
...ora cercavo di renderlo unlit... cioè togliere l'illuminazione e renderlo flat o.o

Claudio Calabrese,
[self release];


[Immagine: 6oddbof][Immagine: 7sjecyp][Immagine: 6ucbq6f][Immagine: 8yespzc]
02-04-2012 19:02
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
kunos
Gatto Incavolato

Messaggi: 2,350
Registrato: Jul 2010
Offline Offline
#4 RE: Shader: unlit con texture e colore
0
(02-04-2012 19:02)Tanius ha scritto:  Si questo l'avevo risolto, ma grazie comunque Occhiolino
...ora cercavo di renderlo unlit... cioè togliere l'illuminazione e renderlo flat o.o

ma cosi' e' flat Fermosu

Forse ti confonde il vertex color?


float4 tex = tex2D( textureSampler, in.UV );
out.color = lerp( ilTuoColoreFissoPassatoComeUniformOCostante , tex, tex.a);

Stefano Casillo

www.assettocorsa.net
www.netkar-pro.com
Twitter
[Immagine: acsign.jpg]
02-04-2012 19:12
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Eclipse
npc in fps 4 food

Messaggi: 11,252
Registrato: Sep 2004
Offline Offline
#5 RE: Shader: unlit con texture e colore
0
Unity fa roba strana, se ricordo bene fa pass interni per aggiungere le ombre o altre cose, magari non è unlit perchè poi unity ci fa calcolare sopra altre cose, devi vedere come togliere tutto quello che non vuoi e lasciare solo le righe che ti ha detto tommo. Magari posta tutto il tuo shader qui per intero usando i tag [ code] e [ /code] (senza spazio)

Giuseppe Navarria - Moonloop
[Immagine: twittericon.png] [Immagine: linkedinicon.png] [Immagine: steamicon.png]
(Questo messaggio è stato modificato l'ultima volta il: 02-04-2012 19:28 da Eclipse.)
02-04-2012 19:27
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
kunos
Gatto Incavolato

Messaggi: 2,350
Registrato: Jul 2010
Offline Offline
#6 RE: Shader: unlit con texture e colore
0
ahhh siamo sul forum di Unity!!!! non avevo letto.

Se non ricordo male Unity ha 2 tipi di shaders: gli shaders e i "surface shaders". I surface shaders sono semplificazioni che permettono di fare solo l'output di un colore lasciando al mighty Unity il compito di illuminare il tutto... quindi nel tuo caso mi sa che devi trovare il modo di fare uno shader non surface.

Dove sta Yagama quando serve? Asd

Stefano Casillo

www.assettocorsa.net
www.netkar-pro.com
Twitter
[Immagine: acsign.jpg]
02-04-2012 20:01
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Tanius
uno di quelli °_°

Messaggi: 214
Registrato: Jan 2012
Offline Offline
#7 RE: Shader: unlit con texture e colore
0
Codice:
Shader "Custom/MyDecalColor" {
Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _MainTex ("Base (RGB)", 2D) = "white" {}
}

SubShader {

    Tags { "RenderType"="Opaque" }
    LOD 250
    Lighting Off
    
CGPROGRAM

#pragma surface surf Lambert

#include "UnityCG.cginc"

sampler2D _MainTex;
fixed4 _Color;

struct Input {
    float2 uv_MainTex;
};

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

Fallback "Diffuse"
}

Semplicemente questo... (siate clementi :inchinoSmile

Claudio Calabrese,
[self release];


[Immagine: 6oddbof][Immagine: 7sjecyp][Immagine: 6ucbq6f][Immagine: 8yespzc]
02-04-2012 20:14
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
XEVIAN
Posting Freak

Messaggi: 957
Registrato: Jan 2010
Offline Offline
#8 RE: Shader: unlit con texture e colore
0
In Unity hai 3 modi per scrivere shader (Dio mio).

Questo è un esempio scritto nel suo buffo linguaggio shaderlab:
Codice:
Shader "Unlit/Alpha"
{
    Properties {
        _Color ("Color Tint (A = Opacity)", Color) = (1,1,1,1)
        _MainTex ("Texture (A = Transparency)", 2D) = ""
    }

    SubShader {
        Tags {Queue = Transparent}
        ZWrite Off
        Blend SrcAlpha OneMinusSrcAlpha
        Pass {
            SetTexture[_MainTex] {Combine texture * constant ConstantColor[_Color]}
        }
    }
}
Poi hai i Surface Shader, che è piuttosto simile a Cg/HLSL e ti permette di "interagire" con il sistema di luci/ombre/menate varie di Unity. Si basa tutto sul fatto di riempire una struttura dati di sistema che contiene Albedo, Normal, Gloss, Emissive, ecc.
Per fare uno shader che non prende la luce, in questo modo, basta che spari il tuo output sulla emissive invece che sulla albedo.

Se invece usi i fragment, dove puoi anche scriverti il tuo sistema di illuminazione, puoi usare la direttiva "Lighting Off" e scriverti tu l'output sul pixel. Esempio:



Codice:
Shader "STUDIOEVIL/BACKGROUNDUNLITADD"
{
    Properties
    {
        _MainTex            ("Color Map & Emissive", 2D)    = "black" {}
        _DiffuseMultiply_0_1("_DiffuseMultiply_0_1", Float) = 0.8
        _GlowIntensity      ("_GlowIntensity", Float)       = 0.0
        _Color              ("_Color", Color) = (1.0, 1.0, 1.0, 1.0)
    }
    
    SubShader
    {
        Tags
        {
            "RenderType" = "Opaque"
            "Queue"="Background"
            "IgnoreProjector"="True"                   
        }
        
        Pass
        {
            Blend One OneMinusSrcColor
            Fog { Mode Off }        
            Cull Off
            ZWrite Off
            Lighting Off
          
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag            
            #include "UnityCG.cginc"
          
            sampler2D _MainTex;
            half _DiffuseMultiply_0_1;
            half _GlowIntensity;
            fixed4 _Color;
          
              struct v2f
            {
                float4  pos : POSITION;
                float2  uv : TEXCOORD0;                            
            };

            float4 _MainTex_ST;

            v2f vert (appdata_base v)
            {
                v2f o;
                o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
                o.uv = TRANSFORM_TEX (v.texcoord, _MainTex);
                return o;
            }
            
            half4 frag (v2f i) : COLOR
            {                
                   fixed4 t2D_MainTex = tex2D(_MainTex, i.uv.xy);
                fixed4 f4_diffuseMultiplied = t2D_MainTex * _DiffuseMultiply_0_1 * _Color;
                fixed alpha = _GlowIntensity * Luminance(f4_diffuseMultiplied.rgb);  
                f4_diffuseMultiplied.a = alpha;
                return (f4_diffuseMultiplied);
            }
            ENDCG
        }
    }
    Fallback "Diffuse"
}

Ah ci sono alcune cose in più che non servono, tipo il GlowIntensity e il DiffuseMultiply (se non ti servono).

XeviaN - Christian Meneghini
STUDIOEVIL.com
Help Syder Arcade getting on Steam Greenlight Smile
FB TW tw YT iDB
(Questo messaggio è stato modificato l'ultima volta il: 02-04-2012 20:31 da XEVIAN.)
02-04-2012 20:24
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
TheCrib
Indie Pellerossa

Messaggi: 5,172
Registrato: Sep 2010
Offline Offline
#9 RE: Shader: unlit con texture e colore
0
(02-04-2012 20:01)kunos ha scritto:  ahhh siamo sul forum di Unity!!!! non avevo letto.

Sottomettiti a Unity, nostro signore e padrone !


Davide Pasca
http://v5.kazzuya.com - @109mae
http://oyatsukai.com - @oyatsukai
"O frechete !" - M.Magnotta
02-04-2012 20:34
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Eclipse
npc in fps 4 food

Messaggi: 11,252
Registrato: Sep 2004
Offline Offline
#10 RE: Shader: unlit con texture e colore
0
(02-04-2012 20:34)TheCrib ha scritto:  Sottomettiti a Unity, nostro signore e padrone !


Render Inchino

Giuseppe Navarria - Moonloop
[Immagine: twittericon.png] [Immagine: linkedinicon.png] [Immagine: steamicon.png]
02-04-2012 21:50
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Tanius
uno di quelli °_°

Messaggi: 214
Registrato: Jan 2012
Offline Offline
#11 RE: Shader: unlit con texture e colore
0
(02-04-2012 20:24)XEVIAN ha scritto:  In Unity hai 3 modi per scrivere shader (Dio mio).

Questo è un esempio scritto nel suo buffo linguaggio shaderlab:
Codice:
...
            SetTexture[_MainTex] {Combine texture * constant ConstantColor[_Color]}
...
...

Io cercavo di sostituire l'alpha con un colore costante, lasciando la texture intatta. Così facendo però non mi "colora" la texture? (lo proverò comunque Occhiolino ora sono dall'altro pc)

(02-04-2012 20:01)kunos ha scritto:  Se non ricordo male Unity ha 2 tipi di shaders: gli shaders e i "surface shaders". I surface shaders sono semplificazioni che permettono di fare solo l'output di un colore lasciando al mighty Unity il compito di illuminare il tutto... quindi nel tuo caso mi sa che devi trovare il modo di fare uno shader non surface.

Si avevo immaginato una cosa simile... avevo provato in glsl ma scapocciava coi parametri _Color e _MainTex Hmm

...

ci devo riprovà. Grazie per le dritte! Fermofumo

Claudio Calabrese,
[self release];


[Immagine: 6oddbof][Immagine: 7sjecyp][Immagine: 6ucbq6f][Immagine: 8yespzc]
(Questo messaggio è stato modificato l'ultima volta il: 03-04-2012 0:28 da Tanius.)
03-04-2012 0:22
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
GeneralMao
Senior Member

Messaggi: 480
Registrato: Jan 2012
Offline Offline
#12 RE: Shader: unlit con texture e colore
0
(02-04-2012 20:34)TheCrib ha scritto:  
(02-04-2012 20:01)kunos ha scritto:  ahhh siamo sul forum di Unity!!!! non avevo letto.

Sottomettiti a Unity, nostro signore e padrone !


Definitivo. Ormai e' onnipresente.

Maurizio Benedetti
-----------------------------------------------------------------------------------------------------------
[Immagine: this_is_mao_logo.png]

[Immagine: teamnovasoft_logo_80_80.png]

https://twitter.com/#!/TeamNovasoft
03-04-2012 15:56
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Tanius
uno di quelli °_°

Messaggi: 214
Registrato: Jan 2012
Offline Offline
#13 RE: Shader: unlit con texture e colore
0
edit:

SOLVED *_*
grazie a tutti

Claudio Calabrese,
[self release];


[Immagine: 6oddbof][Immagine: 7sjecyp][Immagine: 6ucbq6f][Immagine: 8yespzc]
(Questo messaggio è stato modificato l'ultima volta il: 04-04-2012 1:14 da Tanius.)
03-04-2012 17:52
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Rispondi 


Vai al forum: