| Wip Shaders | |
|
|
|
Auteur | Message |
---|
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Wip Shaders Sam 29 Juil - 1:12 | |
| Bon allez Je poste quelques images de ce que je fais quand même Vu que je commence à avoir des résultats. Alors moi mon objectif c'est de prendre les objets de Snakeye, et de les afficher en temps réel sur l'écran. Donc, je fais tous mes tests sur le Compresseur (objet que vous pouvez voir sur le site). Voilà le cheminement des résultats et de la programmation. D'abord je récupère un objet sous sa forme brute, ce qui a la passionnante forme de : Ensuite, je colle dessus une image de base, ce qu'on appelle le "Diffuse" On a donc l'objet de base, mais encore un peu trop plat, et mal éclairé. Donc on va y ajouter ce qu'on appelle du "Bump" (du relief quoi). On se sert d'un truc magique qu'on appelle une Normal Map, c'est une texture tout psychédélique qui nous permet de faire des calculs d'illumination (j'explique pas le principe ici, tapez DOT3 dans google si vous voulez en savoir plus ^^) Voilà à quoi ressemble l'objet mappé avec un normal map : Donc comme dit précédemment, on voit sur cette texture Flashy toutes les "imperfections" de la surface. Bien ! On la combine avec une lumière, pour donner un "relief" et un éclairage orienté, on obtient un "bump" à proprement parler, c'est à dire une map d'éclairage des reliefs en niveaux de gris : Si cette image vous parait un peu étrange sur les questions d'éclairage, c'est parce que la lumière est une lumière directionnelle, en gros, c'est comme si tous les rayons arrivaient parallèles sur la scène, comme si le soleil l'éclairait quoi. A part qu'ici, on ne calcule que les ombres dues au relief, et pas les ombres de l'objet sur lui même (ce sera fait plus tard). Enfin, cette image d'ombrage, on va la combiner avec l'image de base (multiplication), pour obtenir une jolie image avec du relief : Tadaaaaaaa comparez avec l'image de base Et vous comprendrez que le graphiste fait bien son boulot ^^ Voilà ! Je ferai d'autres updates demain (je pense si j'ai le temps), pour la suite des évènements, à savoir : Spécularité/Gloss (réflection de la lumière sur les surfaces) et Attenuation (où comment éviter qu'une ampoule n'éclaire une scène comme le soleil ^^) Bon j'ai encore quelques bugs que je vais essayer de résoudre (genre sur le bump, ca m'inquiète un peu que les surfaces semblables ne soient pas éclairées de la même facon), mais ca c'est plutôt bénin Voilà | |
|
| |
Temp Civil
Nombre de messages : 10 Age : 36 Localisation : Le Breuil à coté du Creusot. Date d'inscription : 15/07/2006
| Sujet: Re: Wip Shaders Sam 29 Juil - 14:27 | |
| "C'est trop bien " C'est vrai avec le petit tuto pour savoir a quoi tu sers dans l'histoire :p C'est bien expliqué, et tu fait ca avec quel soft ? | |
|
| |
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Sam 29 Juil - 14:47 | |
| Moi je fais tout avec Visual Studio. Pour vous donner un exemple de ce que je fais, voilà le Vertex Shader et le Pixel Shader que j'ai développé pour avoir les images que vous voyez au dessus : Vertex Shader - Citation :
//----------------------------------------------------------------------------- // File: VertexShader.vsh // // Desc: Basic Vertex Shader for SEngine //-----------------------------------------------------------------------------
//----------------------------------------------------------------------------- // Global variables //----------------------------------------------------------------------------- float4x4 mWorldViewProj; float4x4 mWorld; float4 mLightPos; float4 mViewPos;
//----------------------------------------------------------------------------- // Vertex shader output structure //----------------------------------------------------------------------------- struct VS_OUTPUT { float4 Position : POSITION; float2 Uv : TEXCOORD0; float4 ViewPos : TEXCOORD1; float4 Light1 : TEXCOORD2; };
//----------------------------------------------------------------------------- // Vertex shader entry point //-----------------------------------------------------------------------------
VS_OUTPUT VSFunction( in float3 vPosition : POSITION, in float2 vUv : TEXCOORD0, in float4 vTangent : TANGENT, in float4 vBinormal : BINORMAL, in float4 vNormal : NORMAL ) { VS_OUTPUT Output; Output.Position = float4(vPosition.x, vPosition.y, vPosition.z, 1.0f); Output.Position = mul(Output.Position, mWorldViewProj); Output.Uv = vUv;
float4x4 tangentSpace = float4x4( vTangent.x, vTangent.y, vTangent.z, vTangent.w, vBinormal.x, vBinormal.y, vBinormal.z, vBinormal.w, vNormal.x, vNormal.y, vNormal.z, vNormal.w, 0, 0, 0, 1); float4 tPos = mul(vPosition, mWorld); Output.ViewPos = normalize(mul(mViewPos - tPos, tangentSpace)); Output.ViewPos = 1.0f; Output.Light1 = normalize(mul(tPos - mLightPos, tangentSpace)); Output.Light1 = 1.0f; return Output; } Pixel Shader - Citation :
//----------------------------------------------------------------------------- // File: PixelShader.vsh // // Desc: Basic Pixel Shader for SEngine //-----------------------------------------------------------------------------
//----------------------------------------------------------------------------- // Pixel shader global variables //-----------------------------------------------------------------------------
float4 mLightPos;
texture T1; texture T2; texture T3;
sampler S1 = sampler_state{ texture = <T1>;
minfilter = LINEAR; magfilter = LINEAR; mipfilter = LINEAR;
AddressU = Clamp; AddressV = Clamp; };
sampler S2 = sampler_state{ texture = <T2>;
minfilter = LINEAR; magfilter = LINEAR; mipfilter = LINEAR;
AddressU = Clamp; AddressV = Clamp; };
sampler S3 = sampler_state{ texture = <T3>;
minfilter = LINEAR; magfilter = LINEAR; mipfilter = LINEAR;
AddressU = Clamp; AddressV = Clamp; };
struct PS_OUTPUT { float4 RGBColor : COLOR0; };
struct VS_OUTPUT { float4 Position : POSITION; float2 Uv : TEXCOORD0; float4 ViewDir : TEXCOORD1; float4 Light1 : TEXCOORD2; };
PS_OUTPUT PSFunction(VS_OUTPUT In) { PS_OUTPUT Output; float4 Diffuse = tex2D(S1, In.Uv); float4 Normal = tex2D(S2, In.Uv) * 2 - 1; float4 Bump = dot(In.Light1, Normal);
Output.RGBColor = saturate(Diffuse * Bump)
return Output; } Voilà a quoi ca ressemble le boulot d'un programmeur ^^ Bon ca c'est du détail artistique les shaders, ca nous permet de faire mumuse, mais c'est pas ce qu'il y a de plus compliqué, ni de plus captivant dans la programmation ^^ | |
|
| |
Mopi Civil
Nombre de messages : 14 Age : 39 Localisation : SDF Date d'inscription : 15/07/2006
| Sujet: Re: Wip Shaders Sam 29 Juil - 20:30 | |
| | |
|
| |
Valundel Civil
Nombre de messages : 14 Age : 36 Date d'inscription : 23/07/2006
| Sujet: Re: Wip Shaders Dim 30 Juil - 7:05 | |
| Ca sent le flood par ici !!! | |
|
| |
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Dim 30 Juil - 11:24 | |
| | |
|
| |
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Dim 30 Juil - 19:16 | |
| Les bugs d'éclairage ont été règlés pour ce shader là Voilà une petite vidéo qui montre ce que ca donne avec une lumière tournante : http://sanaloria.free.fr/Public/Videos/Shaders/Compresseur.avi Enjoy Et n'hésitez pas a me dire ce que vous en pensez Edit : Bon en fait c'est pas lisible pour l'instant ^____^ je retape ca, et j'upload Edit2 : Voilà ca devrait être bon ^^ | |
|
| |
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Lun 31 Juil - 11:55 | |
| Voilà, j'ai fini la deuxième partie des shaders. Je ferai pas d'explication comme pour la première partie parce qu'il faudrait que je vous parle un peu de maths, pour le côté spéculaire et gloss donc je vous épargne les détails. Voilà 3 petites vidéos de ce que ca donne quand on fait mumuse avec les shaders : Une version de base : http://sanaloria.free.fr/Public/Videos/Shaders/Base.avi Une version bourrée (Lumière verte + petit effet trigonométrique ^^) : http://sanaloria.free.fr/Public/Videos/Shaders/Bourr%e9.avi Et une version un peu pété genre trip psychédélique : http://sanaloria.free.fr/Public/Videos/Shaders/P%e9t%e9.avi Voilà Enjoy | |
|
| |
Snakeye Admin
Nombre de messages : 144 Age : 38 Localisation : Le Creusot ou Grenoble Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Lun 31 Juil - 17:02 | |
| hahahaha XD yeah ça démonte ! bien joué aveuh !
*pour l'effet bourré demande moi conseil j'ai pas mal d'expérience* | |
|
| |
Temp Civil
Nombre de messages : 10 Age : 36 Localisation : Le Breuil à coté du Creusot. Date d'inscription : 15/07/2006
| Sujet: Re: Wip Shaders Mar 1 Aoû - 14:42 | |
| Vraiment ouai ! Ca démonte, j'apprend a programmer ! xD Parce que bon voila ! CEST BEAU | |
|
| |
Digicode Civil
Nombre de messages : 9 Age : 39 Localisation : Dans un Bar sur Mar Sara ! Date d'inscription : 10/08/2006
| Sujet: Re: Wip Shaders Mar 15 Aoû - 16:19 | |
| Franchement ! Zolie ! | |
|
| |
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Mar 15 Aoû - 19:04 | |
| - Temp a écrit:
- Vraiment ouai ! Ca démonte, j'apprend a programmer ! xD
Parce que bon voila ! CEST BEAU S'tu apprends a programmer en C++ que t'as un pas tropmauvais niveau, que tu aimes les maths, alors fais moi signe j'ai du taff pour toi dans Sanaloria XD Ca vaut pour tous les gens qui respectent les conditions au dessus. (Oui, les maths c'est important aussi, même si ca dans le cas de la programmation, ca vient avec la pratique) | |
|
| |
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Jeu 17 Aoû - 11:22 | |
| Hop, je faisais des petits tests à la con pour Snakeye, et je suis tombé sur deux jolis effets sur le compresseur. Je pense qu'on s'amusera a les utiliser plus tard dans le jeu pour des effets de transparence.
Voilà donc les deux vidéos correspondantes :
http://sanaloria.free.fr/Public/Videos/Shaders/New%20Shader1.avi http://sanaloria.free.fr/Public/Videos/Shaders/New%20Shader2.avi | |
|
| |
Snakeye Admin
Nombre de messages : 144 Age : 38 Localisation : Le Creusot ou Grenoble Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Jeu 17 Aoû - 17:45 | |
| COMMENT CA DES TESTS A LA CON !!!!! Dis tout de suite que j'ai des idées de con >___< je fais mon boulot moi, et c'est pas une synécure ... *je te hais*bon sinon comme dit hier, c'est achment bien et merci encore pour les tests, ça aide pffff des tests à la con ... t'en foutrais moi des tests à la con ... espèce de buse ... | |
|
| |
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Jeu 17 Aoû - 18:15 | |
| Ben quoi pour moi c'est des tests a la con "vas y charge une boite et mets de la transparence ... Bon ca marche, Lightwave fait n'importe quoi. Allez charge la deuxième boite. Ok ca marche, Lightwave fait vraiment n'imp" (non je te demande pas de changer de Lightwave pour aller sur 3DS ) | |
|
| |
Snakeye Admin
Nombre de messages : 144 Age : 38 Localisation : Le Creusot ou Grenoble Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Jeu 17 Aoû - 18:18 | |
| T'as pas intérêt, sinon je t'émascule ! *grand sourire* c'est comme si tu me demandais de changer mon hummer pour une lada | |
|
| |
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Jeu 17 Aoû - 20:06 | |
| - Snakeye a écrit:
- T'as pas intérêt, sinon je t'émascule ! *grand sourire*
c'est comme si tu me demandais de changer mon hummer pour une lada Je te rappelle que ton dit Hummer EST une lada | |
|
| |
Snakeye Admin
Nombre de messages : 144 Age : 38 Localisation : Le Creusot ou Grenoble Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Jeu 17 Aoû - 22:33 | |
| que veux-tu répondre à ça ... | |
|
| |
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Jeu 17 Aoû - 22:37 | |
| Ben que c'est pas logique que tu bosse avec Lightwave.
Mais que dans ma grande bonté je t'accorde cette faveur ^^
(Putain chuis sympa) | |
|
| |
Snakeye Admin
Nombre de messages : 144 Age : 38 Localisation : Le Creusot ou Grenoble Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Jeu 17 Aoû - 22:44 | |
| non c'est pas logique en ce sens qu'il est pas optimisé pour les graphismes d'un jeu, mais c'est logique en ce sens qu'on peut s'en servir contrairement à 3dsmax, en fait ils ont un super programme mais il y a pas d'interface pour se servir de ses fonctions ...et oui lolremarque en passant : - Citation :
- Ben quoi pour moi c'est des tests a la con "vas y charge une boite et mets de la transparence ... Bon ca marche, Lightwave fait n'importe quoi. Allez charge la deuxième boite. Ok ca marche, Lightwave fait vraiment n'imp"
Je suis pas trop sur que 3dsmax fasse mieux remarque ... c'est une histoire de modèle d'illu, alors après tout dépend de ce qu'on veut faire et des paramètres qu'on a rentré pour cela. Avec LW - et surement 3ds aussi - y a moyen de faire un objet qui sera rendu exactement comme dans SEngine. | |
|
| |
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Ven 18 Aoû - 1:10 | |
| Ouais ben je comprends pas qu'on vende un logiciel qui affiche mal ce qu'on lui demande d'afficher >_> Surtout quand le bordel est le résultat de deux multiplications et d'une addition ... (Color = SrcColor * SrcBlend + DestColor * DestBlend) Et que moi si je sais compter, je sais que, lorsque ma surface est transparente, mon SrcBlend étant égal à 0 et DestBlend à 1, j'aurai Color = DestColor ... Donc franchement ... ... ... Franchement ! | |
|
| |
Snakeye Admin
Nombre de messages : 144 Age : 38 Localisation : Le Creusot ou Grenoble Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Ven 18 Aoû - 2:35 | |
| Je suis tombé par hasard sur un tutorial concernant le texturage, un truc fait par Leigh Van Der Byl (une bourrine du texturage, et une vraie), expliquant pas mal de trucs de base sur le veillissement des matériaux pour faire des surfaces réalistes etc. (pour info c'est là : Texturing Tutorial sur CGTalk) Elle annonce que lorsqu'on met un matériau 100% transparent, on voit quand même l'objet si il possède un pouvoir de réflection spéculaire. Apparemment tous les softs font ça, ce qui peut effectivement sembler paradoxal car 100% transparent signifie qu'on laisse tout passer (donc aucune réflection possible étant donné que le matériau est considéré comme n'interférant pas du tout avec la lumière. A mon avis, leur modèle d'illumination est salement compliqué | |
|
| |
Aveuh Admin
Nombre de messages : 145 Age : 38 Localisation : Paris Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Ven 18 Aoû - 11:10 | |
| De toutes facons, niveau modèle d'illumination, c'est pas compliqué. Ils ont 3 choix possibles : Lambertien, Phong ou Blinn. Lambertien c'est le modèle le plus simple, mais il n'est pas assez précis pour ce qu'on fait (Diffuse + Ambiant). Le Phong c'est ce qu'on utilise : Ambiant + Diffuse * Bump + Speculaire * Réflection. Et Blinn, c'est un peu le même genre a part qu'il y a des conditions à respecter, et je peux pas tropme permettre ca sur du temps réel (genre certaines valeurs ne doivent pas être à zéro ... Et ca me plait pas ) Ensuite, c'est sur qu'il y a des modèles très compliqués (transferts delumière, radiosité, photon mapping, BRDF) mais bon, vuqu'ils sont pas applicables au temps réel (quoi que ... Peut être que BRDF est applicable je sais pas trop), je connais pas trop. Toujours est il que LW utilise probablement un de ces modèles vu que le temps réel sous LW on s'en fout un peu. Mais ca m'étonne quand même que sur un truc simple comme ca ca foire. De dire "Ma surface est complètement transparente mais je la vois quand même" ... Je sais pas moi C'est comme dire que l'homme invisible finalement on pouvait le voir parce que la réflexion de la lumière sur le matériau derrière le colore en un peu plus clair (ouais c'est con) PS : Si ca intéresse des gens le côté mathématique de tout ca : http://www.dgp.toronto.edu/~karan/courses/csc418/fall_2002/notes/illum_local.html | |
|
| |
Snakeye Admin
Nombre de messages : 144 Age : 38 Localisation : Le Creusot ou Grenoble Date d'inscription : 14/07/2006
| Sujet: Re: Wip Shaders Ven 18 Aoû - 18:31 | |
| Ouais la transparence à 100% et la surface visible quand même ça choque. Je suis en train de faire des recherches sur le BRDF. C'est un truc de sauvage ça O__o je sais pas si c'est vraiment faisable en temps réel parce qu'il y a quand même masse de paramètres à rentrer, ça veut dire des textures en plus pour les paramètres bref une vraie horreur. C'est beau mais cher payé. Tiens matte ça : http://graphics.cs.ucf.edu/brdfshop/index.php C'est un programme pour Maya qui permet de paramétrer un shader BRDF pour un objet particulier. Y a un PDF avec plus de détails, c'est hyper flippant ce truc. Par contre c'est méchamment beau, les rélfections anisotropiques, pour les réflections adoucies (dans le cas d'un métal brossé par exemple). Faudra que j'y jette un oeil pour les cinématiques, y a moyen de faire des beaux rendus je pense Par contre c'est la misère pour trouver des documents sur le BRDF, je misère pour arriver à faire un lien avec la structure d'un matériau O__o si tu trouves, pose le lien C'est genre : comment, à partir d'une seule lampe, tu peux avoir plusieurs highlight points ? C'est dingue O_o je comprends pas trop ... [edit] : http://www.rendermanacademy.com/docs/lafortune_model.htm, c'est une explication possible : Sur cette image on voit un rayon (internal reflection) qui revient vers la surface observée, ça peut expliquer éventuellement un highlight de plus, par contre faut expliquer celui qui est symétrique, et là ... c'est pas de la tarte. | |
|
| |
Digicode Civil
Nombre de messages : 9 Age : 39 Localisation : Dans un Bar sur Mar Sara ! Date d'inscription : 10/08/2006
| Sujet: Re: Wip Shaders Dim 20 Aoû - 0:42 | |
| Dit moi ce qu'il faut que j'explique et je te fais un post dessus ! ! | |
|
| |
Contenu sponsorisé
| Sujet: Re: Wip Shaders | |
| |
|
| |
| Wip Shaders | |
|