IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unity Discussion :

A la recherche d'un shader qui peut flouter une texture


Sujet :

Unity

  1. #1
    tlt
    tlt est déconnecté
    Membre averti Avatar de tlt
    Homme Profil pro
    Programmeur
    Inscrit en
    Juillet 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Programmeur
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 202
    Points : 412
    Points
    412
    Par défaut A la recherche d'un shader qui peut flouter une texture
    Bonjour,
    Je suis à la recherche d'un shader pour unity qui permet de flouter la texture d'un gameobject. Je suis sous unity 4.1.2.
    J'en ai trouvé un sur l'assetstore https://www.assetstore.unity3d.com/#/content/6296 et il semble que c'est qui me va mais malheureusement, ça ne fonctionne pas avec las dernière version.
    Sinon quelqu'un a-t-il une idée de comment on fait? je commence tout juste à apprendre les shaders aussi
    Merci

  2. #2
    Membre confirmé Avatar de _MAID
    Homme Profil pro
    Game developer
    Inscrit en
    Novembre 2010
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Game developer

    Informations forums :
    Inscription : Novembre 2010
    Messages : 216
    Points : 462
    Points
    462
    Par défaut
    Citation Envoyé par tlt Voir le message
    il semble que c'est qui me va mais malheureusement, ça ne fonctionne pas avec las dernière version.
    étonnant, de mon coté je viens de tester et cela semble bien fonctionner.
    Ça veut dire quoi 'mais malheureusement, ça ne fonctionne pas' ?

  3. #3
    tlt
    tlt est déconnecté
    Membre averti Avatar de tlt
    Homme Profil pro
    Programmeur
    Inscrit en
    Juillet 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Programmeur
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 202
    Points : 412
    Points
    412
    Par défaut
    Quand on deplace le mesh, la texture ne suit pas. elle semble rester en place
    Et je ne sais pas exactement ce que fait le shader ni ou modifier pour que ça suit le mesh

  4. #4
    Membre confirmé Avatar de _MAID
    Homme Profil pro
    Game developer
    Inscrit en
    Novembre 2010
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Game developer

    Informations forums :
    Inscription : Novembre 2010
    Messages : 216
    Points : 462
    Points
    462
    Par défaut
    Le blur se fait à travers un plane transparent, une sorte de paravent que l'on brouille pour déformer l'image restitués de ce que l'on voit derrière...
    Ce que l'on vaut flouter doit donc se trouver à regarder derrière ce plane.

  5. #5
    tlt
    tlt est déconnecté
    Membre averti Avatar de tlt
    Homme Profil pro
    Programmeur
    Inscrit en
    Juillet 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Programmeur
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 202
    Points : 412
    Points
    412
    Par défaut
    Ah bon? je croyais que c'était un plane sur lequel on applique une texture et qu'on floutte.
    Donc finalement, le package de l'asset n'est pas ce que je cherche

  6. #6
    tlt
    tlt est déconnecté
    Membre averti Avatar de tlt
    Homme Profil pro
    Programmeur
    Inscrit en
    Juillet 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Programmeur
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 202
    Points : 412
    Points
    412
    Par défaut
    Sinon, il semble que la texture génerée par ce shader semble inversé sous mac osx et ios c'est à dire que le haut devient le bas et vis versa.
    Quelqu'un aurait-il une idée de comment faire pour retourner une texture à l'endroit?

    voici le code source original du shader en question qui semble poser problème sous mac.
    Ce shader permet est une shader de floutage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    Shader "Custom/MatBlur" {
        Properties {
    		_blurSizeXY("BlurSizeXY", Range(0,10)) = 0
    	}
        SubShader {
     
            // Draw ourselves after all opaque geometry
            Tags { "Queue" = "Transparent" }
     
            // Grab the screen behind the object into _GrabTexture
            GrabPass { }
     
            // Render the object with the texture generated above
            Pass {
     
     
    		CGPROGRAM
    		#pragma vertex vert
    		#pragma fragment frag 
    		#pragma target 3.0
     
    		sampler2D _GrabTexture : register(s0);
    		float _blurSizeXY;
     
    		struct data {
     
    		    float4 vertex : POSITION;
     
    		    float3 normal : NORMAL;
     
    		};
     
     
     
    		struct v2f {
     
    		    float4 position : POSITION;
     
    		    float4 screenPos : TEXCOORD0;
     
    		};
     
     
     
    		v2f vert(data i){
     
    		    v2f o;
     
    		    o.position = mul(UNITY_MATRIX_MVP, i.vertex);
     
    		    o.screenPos = o.position;
     
    		    return o;
     
    		}
     
     
     
    		half4 frag( v2f i ) : COLOR
     
    		{
     
    		    float2 screenPos = i.screenPos.xy / i.screenPos.w;
    			float depth= _blurSizeXY*0.0005;
     
    		    screenPos.x = (screenPos.x + 1) * 0.5;
     
    		    screenPos.y = 1-(screenPos.y + 1) * 0.5;
     
    		    half4 sum = half4(0.0);    
    		    sum += tex2D( _GrabTexture, float2(screenPos.x-5.0 * depth, screenPos.y+5.0 * depth)) * 0.025;    
    		    sum += tex2D( _GrabTexture, float2(screenPos.x+5.0 * depth, screenPos.y-5.0 * depth)) * 0.025;
     
    		    sum += tex2D( _GrabTexture, float2(screenPos.x-4.0 * depth, screenPos.y+4.0 * depth)) * 0.05;
    		    sum += tex2D( _GrabTexture, float2(screenPos.x+4.0 * depth, screenPos.y-4.0 * depth)) * 0.05;
     
     
    		    sum += tex2D( _GrabTexture, float2(screenPos.x-3.0 * depth, screenPos.y+3.0 * depth)) * 0.09;
    		    sum += tex2D( _GrabTexture, float2(screenPos.x+3.0 * depth, screenPos.y-3.0 * depth)) * 0.09;
     
    		    sum += tex2D( _GrabTexture, float2(screenPos.x-2.0 * depth, screenPos.y+2.0 * depth)) * 0.12;
    		    sum += tex2D( _GrabTexture, float2(screenPos.x+2.0 * depth, screenPos.y-2.0 * depth)) * 0.12;
     
    		    sum += tex2D( _GrabTexture, float2(screenPos.x-1.0 * depth, screenPos.y+1.0 * depth)) *  0.15;
    		    sum += tex2D( _GrabTexture, float2(screenPos.x+1.0 * depth, screenPos.y-1.0 * depth)) *  0.15;
     
     
     
    		    sum += tex2D( _GrabTexture, screenPos-5.0 * depth) * 0.025;    
    		    sum += tex2D( _GrabTexture, screenPos-4.0 * depth) * 0.05;
    		    sum += tex2D( _GrabTexture, screenPos-3.0 * depth) * 0.09;
    		    sum += tex2D( _GrabTexture, screenPos-2.0 * depth) * 0.12;
    		    sum += tex2D( _GrabTexture, screenPos-1.0 * depth) * 0.15;    
    		    sum += tex2D( _GrabTexture, screenPos) * 0.16; 
    		    sum += tex2D( _GrabTexture, screenPos+5.0 * depth) * 0.15;
    		    sum += tex2D( _GrabTexture, screenPos+4.0 * depth) * 0.12;
    		    sum += tex2D( _GrabTexture, screenPos+3.0 * depth) * 0.09;
    		    sum += tex2D( _GrabTexture, screenPos+2.0 * depth) * 0.05;
    		    sum += tex2D( _GrabTexture, screenPos+1.0 * depth) * 0.025;
     
    			return sum/2;
     
    		}
    		ENDCG
            }
        }
     
    Fallback Off
    }

    J'ai trouvé ceci
    http://docs.unity3d.com/Documentatio...fferences.html
    mais je ne sais pa trop comment proceder

    EDIT: finalement d'après la doc, il y a des nuances entre le portage multiplatforme, surtout pour le passage D3D vers opengl ou vis versa

    Pour ceux qui utilisent opengl, il faut modifier un peu le shader et
    mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     screenPos.y = 1-(screenPos.y + 1) * 0.5;
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     screenPos.y = (screenPos.y + 1) * 0.5;
    et le problème est résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Un même évenement qui peut avoir une ou plusieurs heures le même jour
    Par alfhcg dans le forum Modélisation
    Réponses: 4
    Dernier message: 15/09/2011, 00h23
  2. recherche d'un script php qui peut m'aider
    Par izem_n_dzayer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 02/09/2010, 14h16
  3. Réponses: 5
    Dernier message: 17/07/2008, 17h31
  4. Recherche a récupérer ce qui est entre une date saisie et 9999-12-31
    Par Lolie11 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/06/2007, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo