begin process at 2012 02 14 07:21:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Multimédia

 > 

DirectX

 > 

HLSL Shader fx et vb net


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

HLSL Shader fx et vb net

samedi 17 juin 2006 à 11:15:42 | HLSL Shader fx et vb net

nomadsoulnomad



Bonjour, je recherche a effectuer des shaders dans mon jeu avec vb net express 2005 et un logiciel qui crée les shaders FX ! Le probleme est le suivant : pour des shader simple sa marche, mais dès que le shader fx contient des textures et une light , la compilation s'arrete a mesh.drawsubset(0).

- je voudrait savoir si il faut construire soit meme la light en VB ou si le fichier fx s'en charge lui meme ?
-Pareil pour les textures ,faut-t'il les charger soit meme et les appliquer sur l'object ?

Au moment de la creation du Fx dans le logiciel, il marche et peut etre appliquer sur un mesh pour en apprecier le resultat, le probleme vient donc de moi et non pas du fichier fx ! Merci de votre futur aide !
mardi 20 juin 2006 à 14:33:37 | Re : HLSL Shader fx et vb net

vr3h

Alors pour les lights, je ne me suis pas encore penché dessus, tu peux de toute facon tout coder en VB, mais je crois qu'il existe deja quelque chose qui te permet de récupérer les lights definies auprès de ton Device.
Pour ce qui est de la texture, il faut la passer au device via la methode SetTexture, et ensuite dans ton code HLSL utiliser un sampler auquel tu accèdes via les intrinsèques tex2D par exemple...

Pour ma part j'aimerai savoir comment tu fais pour le depth buffer ? j'arrive a l'utiliser mais ça reste de la "bidouille" et j'aimerai utiliser une méthode "propre" pour le remplir.
mardi 20 juin 2006 à 14:51:06 | Re : HLSL Shader fx et vb net

nomadsoulnomad

En faite moi je programme via un moteur 3d gratuit pour le developpement et payant pour le diffuser ! Ce programme n'accepte que pour l'instant directx 8! Or moi j'essay de travailler en directx9 avec les shader 3 , convertir le resultat en texture pour qu'il soit exploitable par le moteur graphique ...Donc en faite je sui un debutant en se qui concerne la programmation pure en direct x et en shader 3 !!!!! Quesque tu appelle "remplir le depth buffer" ?  

 

Au faite merci pour ta reponse mais autre question mon shader  peut utiliser plusieur texture a mettre sur un object, le probleme c'est que si j'applique la texture via le device il va aplliquer la derniere texture au device sans y mettre ou traiter les precedente !!!!! Compliquer tt sa....

mardi 20 juin 2006 à 15:46:44 | Re : HLSL Shader fx et vb net

vr3h

Pour le multitexturing, admettons que tu aies les lignes de code suivante au début :

sampler2D Texture1;

sampler2D Tex2;

sampler2D GlowTexture;

Ces 3 lignes de code HLSL définissent 3 sampler 2D auxquels tu accèdes par l'intrinsèque "tex2D". Ils sont en quelque sorte des références vers les textures passées au Device.

Pour définir le sampler "Texture1", dans ton code VB, tu fais : Device.SetTexture(0, Texture1).

Pour définir le sampler "GlowTexture", dans ton code VB, tu fais : Device.SetTexture(2, Texture3).

Et pour définir le sampler "Tex2", dans ton code VB, tu fais : Device.SetTexture(1, Texture2).

Comme tu peux le voir c'est très simple.

Pour ce qui est de mon problème de depth buffer, le problème que j'ai c'est que si je ne défini pas la sémantique DEPTH dans le PixelShader, c'est comme si il ignorait le depth buffer. Aussi j'aimerais savoir comment faire pour qu'avec un shader je puisse utiliser convenablement le depth buffer.

mercredi 21 juin 2006 à 15:03:13 | Re : HLSL Shader fx et vb net

nomadsoulnomad

bha heu dans ton fichier fx tu doit avoir une ligne qui te permet d'acceurir le "world view projection" ! Tu fait toi meme le fichier fx ou c'est un logiciel qui te le fait ?
Dans mon fichier fx jai cette ligne :
               float4x4 wvp : WorldViewProjection
que j'aquiere ensuite dans mon VB ! puis apres dans mon loop de vb jai cette ligne :

   meshshader.SetValue(Tech2, Matrix.LookAtLH(

New Vector3(0.0F, 1.0F, -4.0F), New Vector3(0.0F, 0.0F, 0.0F), New Vector3(0.0F, 1.0F, 0.0F)) * Matrix.PerspectiveFovLH(1.0F, 10 / 10, 1.0F, 500.0F))



tech2 est defini dans mon vb comme :

   Public

Tech2 As Microsoft.DirectX.Direct3D.EffectHandle = Microsoft.DirectX.Direct3D.EffectHandle.FromString("wvp")
ou wvp c'est le world view projection .... cest sa ton pb ? ou jai pas compris se que cétait le depth buffer ?


mercredi 21 juin 2006 à 15:18:28 | Re : HLSL Shader fx et vb net

nomadsoulnomad


rectification: Dans mon fichier Fx voici mes lignes :
   texture cubeMap : Environment
<
 string ResourceName = "default_reflection.dds";
 string ResourceType = "Cube";
>;

texture fresnelTex : Environment
<
 string ResourceType = "2D";
 string function = "generateFresnelTex";
 
 float2 Dimensions = { 256.0f, 1.0f};
>;

samplerCUBE environmentMapSampler = sampler_state
{
 Texture = <cubeMap>;
 MinFilter = Linear;
 MagFilter = Linear;
 MipFilter = Linear;
};

sampler2D fresnelSampler = sampler_state
{
 Texture = <fresnelTex>;
 MinFilter = Linear;
 MagFilter = Linear;
 MipFilter = None;
};

Dans mon vb jai : 
   

Public fresnel As EffectHandle = EffectHandle.FromString( "fresnelTex" )
puis

Textures(3) = meshshader.GetValueTexture(fresnel)


Dans mon loop jai :

device.SetTexture(1, Textures(3))

Pour l'autre texture pareil (comme tu a dit, je vait pas mettre tt mon code...) Le probleme c'est que mon teapot est rendu en noire ! Jai ajjouter une light et meme un material, tj en noire , pourqoi ?

jeudi 22 juin 2006 à 15:06:39 | Re : HLSL Shader fx et vb net

vr3h

Le depth buffer est une surface, comme le back buffer, sauf que les données que contient le depth buffer ne sont pas affichées, elles sont utilisées pour savoir si le pixel qui est en train d'etre dessiné est plus proche ou plus loin que celui qui a déjà été dessiné. Ca permet d'éviter qu'un pixel caché par une autre face soit dessiné. Si tu veux je peux t'envoyer un exemple de "glow" mais qui "bug" un peu a cause du depth buffer justement...

Sinon, pour tes textures, leur déclaration a l'air bonne, c'est quoi le code de ton PixelShader ?
jeudi 22 juin 2006 à 15:56:43 | Re : HLSL Shader fx et vb net

nomadsoulnomad

voici les lignes de mon pixel shader :



/********* pixel shader ********/

// modified refraction function that returns boolean for total internal reflection
float3
refract2( float3 I, float3 N, float eta, out bool fail )
{
 float IdotN = dot(I, N);
 float k = 1 - eta*eta*(1 - IdotN*IdotN);
// return k < 0 ? (0,0,0) : eta*I - (eta*IdotN + sqrt(k))*N;
 fail = k < 0;
 return eta*I - (eta*IdotN + sqrt(k))*N;
}

// approximate Fresnel function
float fresnel(float NdotV, float bias, float power)
{
   return bias + (1.0-bias)*pow(1.0 - max(NdotV, 0), power);
}

// function to generate a texture encoding the Fresnel function
float4 generateFresnelTex(float NdotV : POSITION) : COLOR
{
 return fresnel(NdotV, 0.2, 4.0);
}

float4 mainPS(vertexOutput IN,
    uniform samplerCUBE EnvironmentMap,
    uniform half reflectStrength,
    uniform half refractStrength,
    uniform half3 etas
    ) : COLOR
{
    half3 N = normalize(IN.WorldNormal);
    float3 V = normalize(IN.WorldView);
   
  // reflection
    half3 R = reflect(-V, N);
    half4 reflColor = texCUBE(EnvironmentMap, R);

// half fresnel = fresnel(dot(N, V), 0.2, 4.0);
 half fresnel = tex2D(fresnelSampler, dot(N, V));

 // wavelength colors
 const half4 colors[3] = {
     { 1, 0, 0, 0 },
     { 0, 1, 0, 0 },
     { 0, 0, 1, 0 },
 };
       
 // transmission
  half4 transColor = 0;
   bool fail = false;
    for(int i=0; i<3; i++) {
     half3 T = refract2(-V, N, etas[i], fail);
     transColor += texCUBE(EnvironmentMap, T) * colors[i];
 }

    return lerp(transColor*refractStrength, reflColor*reflectStrength, fresnel);
}

/*************/

Quand j'aplique le shader sur une teapot generer par le programe qui crée le shader sa marche , mais pas dans mon programme! Pour ton probleme je voit se que tu veut dire le pb c'est que je sui pas assez avancer pour te repondre malheuresement !

jeudi 22 juin 2006 à 16:11:01 | Re : HLSL Shader fx et vb net

nomadsoulnomad



modification , pour ton probleme essay avec ces lignes :

Device.RenderState.ZBufferEnable =

True

Device.RenderState.ZBufferWriteEnable =

True

Device.RenderState.ZBufferFunction = Microsoft.DirectX.Direct3D.Compare.LessEqual

vendredi 23 juin 2006 à 10:09:34 | Re : HLSL Shader fx et vb net

vr3h

Tu utilises un logiciel pour programmer ton shader ? ou quelque chose comme le bloc-note ? Il faudrait s'assurer sinon que lerp retourne bien un vecteur 4D, sinon essaye de le faire explicitement ?

1 2

Cette discussion est classée dans : net, vb, fx, shader, hlsl


Répondre à ce message

Sujets en rapport avec ce message

VB .Net 2005, .net 3 et WPF [ par pjouy ] BonjourJe voudrais utiliser des effets graphiques de Vista (comme le transparent flouté) dans mon application. J'ai eu beau chercher, je n'ai trouvé a Vb.net et 2500 [ par whombat ] Bonjour à tous,Je voulais acheter un livre sur VB.Net et le libraire (qui est pourtant un gars très compétant) me propose un ouvrage intitulé :"VB 250 delete from en vb.net [ par bcmfr ] Bonjour à tousj'ai besoin de votre aide pour savoir comment supprimer des données de ma base access grace a delete mais sans utiliser SQL server. Or s Vb 6 vers Vb.net [ par math083 ] Bonjour tout le mondeJe programme depuis 1997 sous VB, j'ai connu tous les Vb de la version 4 à la version 6. J'ai depuis peu la version 2005 et j'ai [VB.Net]Synchronisation contacts outlook express [ par moimael ] Voila pour les besoins de mon appli, je dois communiquer avec outlook express pour récuperer les contacts présents dans le carnet d'adresse pour ensui Impression sous VB Net 2005 [ par Sismic22 ] Salut à tous! Je travail actuellement sur l'impression. Je rempli un formulaire sous VB, puis un boutton imprimer m'envoie sur la page aperçu avant modification des droits sur un dossier VB.NET [ par LeakimD ] Salut Je cherche a créer des dossiers sur le disque a partir d'un applicationjusque la pas de problèmemais je veux gerer les droits sur ceux dossiers objet COM vb.net [ par billy21121 ] Bonjour a tous,j'ai un petit problème sur des formulaires vb.net.j'ai crée une dll en vb.net qui contient une class et une form. ma class appel la for Police standard pour Projet VB.NET [ par Sipat ] Bonsoir,J'ai essayé mon projet sur un autre ordi ,je me suis aperçu que la police des Labels avait changés parce que la police que j'ai utilisée Arena Dessin dans VB.NET [ par greg60200 ] Bonjour,je cherche a réaliser des dessins en 2D (triangle, rectangles, polygones) que je pourrai ensuite utiliser comme objet dont les propriété me pe


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,666 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales