CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Petit pb, DirectX HLSL

tomtomclancy
tomtomclancy
Niveau 9
30 octobre 2005 à 01:07:09

Bonjour Bonjour.

Je sais que tres tres peu d´entre vous serez capable de me repondre.
Mais ma carte graphique ne gerant que le pixel shader et vertex shader 1.1, cela me pose un problem pour un programme ayant du code fonctionnant en pixel shader 2.0.

mon problem, que je ne comprends pas bien non plus , est que mon pixel shader n´arrive pas a recuperer ma structure de sortie de mon vertex shader en version 1.1. Il me fait une erreur de lecture memoire.

En Cg pas de probleme, la sortie du vertex shader rentre bien dans le pixel shader.

"Pous gollumaker qui pourrait me repondre (ben fais tout en Cg !) non, pour notre moteur en DirectX on a besoin de passer un objet de type D3DEFFECT, donc HLSL only"

le code
http://rafb.net/paste/results/lXWz4677.html

Sinon me passer un lien d´un forum pouvant me renseiger ce simpathique.

tomtomclancy
tomtomclancy
Niveau 9
30 octobre 2005 à 01:10:35

Desolé d´avoir ecorché ton pseudo Gollunkawder
:peur:

LGV
LGV
Niveau 28
30 octobre 2005 à 02:23:55

avec un coup d´oeil rapide, je ne vois rien de particulier qui soit trivial.
Soit c´est qqch de tres idiot, et on passe a cote, ou au contraire, c´est bien tordu.

Je conseillerai de tester le shader avec un device en REF, histoire de mettre l´HAL hors de cause (les compilos HLSL de DX etaient pas mal bugges dans des versions un peu anciennes).
Essaye de faire tourner le shader dans FX Composer.
Essaye de le tracer avec le PIX, si le shader compile proprement.

(au passage, evite le swizzling avec des operandes de tailles mixtes ; i.e. un .xyz avec un float3 et un float4)

tomtomclancy
tomtomclancy
Niveau 9
30 octobre 2005 à 02:40:11

Avec le viewer de DX, il me le compile pas.
l´erreur qu´il me dis est :

(38)Warning : texcoord input used directly (that is, other than sampling from texture) in shader body in ps 1_1 are always clamped from 0 to 1.

(38) error : cannot map expression to pixel shader instruction set.

Et donc : compilation failed :-(

Je debute dans le HLSL donc j´ai pas bien capté ce qu´il me veut, enfin juste que le warning entraine l´erreur.

LGV
LGV
Niveau 28
30 octobre 2005 à 02:56:50

aaah, ben ca va etre tres simple alors :D
l´instruction normalize n´est dispo cote PS qu´en pixel shader 2.0 et plus (comme tu precises au debut, mais sans detail sur les instructions en question).
Par contre c´est dispo cote VS a partir de 1.1 ; donc normalise tes donnees AVANT de les transmettre au pixel shader, cote VS donc.
Dans ton cas c´est simple, mais si tu faisais des calculs dans le PS qui devraient ensuite etre normalises, il faudrait feinter (genre grosse approx a coup de dot et de series, ou texture de sqrt en precacl, etc.).

details : pour le warning, c´est un soucis qui va entrainer un mauvais fonctionnement de ton shader. Vu que tu passes des infos via les interpolateurs des TEXCOORD (normal, au passage), on te previent qu´ils sont bornes a [0, 1] en PS1. Donc un vecteur avec des composantes negatives va etre deforme...
solution : fait comme on fait habituellement pour des normal maps par ex ; tu resamples tes composantes en 0-1 cote VS (betement (x + 1.0f)*0.5f), et du fais l´inverse cote PS (donc x*2.0f - 1.0f)

l´erreur en elle meme indique clairement que le jeu d´instruction PS1.1 ne permet pas les operations que tu fais.

=> change de CG, tu va t´emmerd... sur bcp de points, avec un GPU ne supportant pas au moins les VS/PS 2.0

LGV
LGV
Niveau 28
30 octobre 2005 à 02:58:54

ah oui, et le warning et l´erreur sont ici independants ;)

gollumkawder
gollumkawder
Niveau 10
30 octobre 2005 à 11:39:13

what LGV said :sournois: (je vois pas quoi rajouter de plus..)

Je t´aurais pas dit de le faire en CG, le CG c´est supayr mais c´est vieux, le HLSL c´est actuel et actualisé, d´ailleurs j´en ai fait un peu c´est pas mal..

(Vengeaaaaaaaaaaaaance pour mon pseudo :-d )

Sinon LGV a raison vaudrait mieux que tu changes de GPU =/ Puisque tu sembles etre dans les premieres GeForce Si tu as pas beaucoup de sous une alternative dans les GeForce FX peut etre interessante (certains te diront qu´elles sont decevantes, mais le core est plus actuel que ceux des 4 Ti par ex. et supportent bien mieux les dernieres technologies). Sinon si tu es un gros bourgeois plein de fric (j/k) tapes dans les 6x00, t´en as pour un bout de temps avec ça. Coté ATI ya bien les 9800 qui tiennent la route, et les series Xx00 maibon, sapusaymal^^ (& don´t feed it !)

tomtomclancy
tomtomclancy
Niveau 9
30 octobre 2005 à 12:54:32

Merci beaucoup.

Pour le changement de carte graphique je comptait le faire, mais d´un autre coté. Pour le coté dev, si on passe tout en pixel et vertex shader 2.0 nos jeux ne seront plus accessible a tout le monde.

De toute facon si je change de carte c´est pour une tip top, 6800 de nVidia.

Je regarde pour mon code tout de suite.
Encore merci :ok:

tomtomclancy
tomtomclancy
Niveau 9
30 octobre 2005 à 17:29:36

Re: LGV et gollum.
J´ai un autre petit soucis, c´est pour le passage de plusieur texture a ma carte graphique.
J´a n´arrive qu´a en recuperer une seul avec ma methode en shader 1.1, en 2.0 ca marche nikel.

http://rafb.net/paste/results/FhHsvu94.html

donc le probleme est au niveau du
sampler maintexSampler : register(s1) = sampler_state

A premiere vu le registre S1 il refuse de me le lire en shader 1.1.
Y aurais pas un moyen de contourner cela ?

LGV
LGV
Niveau 28
30 octobre 2005 à 19:32:41

c´est p-e une limite du nb d´interpolateurs utilises.
Ne specifie aucun registre (le compilo fait ca tres bien automatiquement, et evite souvent des bourdes perf-killer), et re-teste. En tentant d´assigner les samplers, il crachera p-e des warnings.

Dans tous les cas, donne nous TOUTES les infos : les symptomes, les msg de compilo, si ca marche sous FXEdit, si ca marche en REF, etc.

LGV
LGV
Niveau 28
30 octobre 2005 à 19:45:17

au passage, tu ne definis pas de texture pour ton sampler ; selon comment tu t´en sers, ca va marcher ou non.. est-ce que c´est voulu ?

tant qu´a y etre, specifie toujours le type des operandes immediates ; tu melanges par ex. des "1" avec des float. Dans certain cas ca peut confusionner le compilo HLSL qui va faire qq operations "a blanc" pour faire passer ca. En collant un "1.0f", tu es sur de faciliter le boulot du compilo.

tomtomclancy
tomtomclancy
Niveau 9
30 octobre 2005 à 21:19:14

En realité, ce code, n´est pas de moi, ou en petite partie seulement pour de ce qui est du passage de texture. J´ai compris ce que ca fais mais pas le pourquoi.

J´en suis qu´a ma deuxieme journée en HLSL.

pour les attribution afin de facilité le travaille du compilo, je le fait, c´est juste que j´ai pas fais attention, au 1 au lieu du 1.0f.

sinon je veux bien ne pas attribuer de registre mais, je sais pas comment m´y prendre :-(

Sinon pour la deuxieme structure (sampler) il prend la texture de l´object celle qui est defini dans le .x

LGV
LGV
Niveau 28
31 octobre 2005 à 09:45:21

visiblement tu sautes qq etapes, si ce code n´est pas de toi et que tu ne peux pas aisement le manipuler. Je te conseillerai de lire la doc du Cg (si si,c´est tres proche du HLSL, et surtout tres bien detaille), puis celle du HLSL dans la doc DX, puis les sample du HLSL Workshop, entierement detaille.
Ensuite seulement tu seras a meme de saisir toutes les finesses. Ca ne devrait pas te prendre tres longtemps ; commence par ca, et reviens quand tu pourras un peu tripatouiller le code en connaissance de cause :)

tomtomclancy
tomtomclancy
Niveau 9
31 octobre 2005 à 12:36:46

OK OK, je fais ca ce soir.
Pour le Cg ca fais deja 3 semaines que j´en fais.

On en reparle demain ou apres demain
Merci bien en tout cas, je pensais pas avoir de reponse ici, mais je me suis trompé :ok:

LGV
LGV
Niveau 28
31 octobre 2005 à 12:48:06

" je pensais pas avoir de reponse ici, mais je me suis trompé"

eh eh, on ne dirait pas, mais il y a des gens dont c´est le boulot, quand meme ;)

fil_razorback
fil_razorback
Niveau 10
31 octobre 2005 à 12:50:57

Wahou c´est terrible ce genre de topics, ca doit donner envie aux débutants :rire:

tomtomclancy
tomtomclancy
Niveau 9
31 octobre 2005 à 12:58:21

Evidement en montrant le resultat et pas le code ca aurait ete plus attractif, mais bon c´etait pas le but non plus.
Et puis c´est vrai qu´on est loin des script RPGMaker :p)
High Level Shading Language, ca pete comme non !

fil_razorback
fil_razorback
Niveau 10
31 octobre 2005 à 13:03:08

Arf et ca sert à quoi? A faire des ombres portées?

tomtomclancy
tomtomclancy
Niveau 9
31 octobre 2005 à 13:08:16

Le premier c´etait simplement pour de l´eclairage. Le second c´est pour du bump mapping et un eclairage en vertex shader.

gollumkawder
gollumkawder
Niveau 10
31 octobre 2005 à 14:29:46

Globalement les HLSLs (celui de microsoft, nvidia et celui de SGI/ARB) sont des langages haut niveau qui permettent de manipuler des instructions très puissantes directement envoyées au GPU, le Graphic Processing Unit, cad ce pourquoi ta carte graphique next gen est si chere ^^ (avec la ram embarquée of coz).
Dedans on distingue deux choses. Les Vertex shaders et les Pixels shaders (tout simplement parcequ´en fait ton GPU est consituté de deux unité de traitement, le vertex processor et le fragment processor (aka pixel processor).

Les vertex shaders permettent au programmeur de ´court-circuiter´ les traitement standard effectué par l´API et la carte gfx sur les vertices et les remplacer par un programme a ta sauce, completement presonnalisé :d) traitement géometrique et illumination des vertices a gogo.
Ca permet de decharger le CPU en tache, et donc d´avoir de bonnes perfs pour des "arse-kickaz FX" :sournois:
I.e: tweening, morphing, modif dynamique des matrices de projection, anim locales des objs, particules (miam) et autres illuminations complexes.

Les pixels shaders permettent au programmeur de controler la partie lié a l´imagerie relative au pixels :d) transparance, mélange et plus sournoisement convolutions/filtres, traitements d´illumination, manip des textures realtime et effet de couleurs les plus extravagants..
I.e: effets de profondeur, volumtric fog, ombres locales, cell shading, effets de peinture et calcul de textures realtime...

A la base tout ça c´etait en langage ´assembleur´ et pas très pratique. Debugger un gros shader en assembleur devenait vite du "cutting edge" comme dirait les gars de la Silicon. Bref un truc horrible, méchamment puissant mais a courte durée de vie etant donné le ratio de difficulté et les boites d´aspirine a la ligne de code. Heureusement ! Nos amis Microsoft et Nvidia travaillèrent main dans la main pour creer le Cg et le Ms HLSL. Langage haut niveaux qui permettent toussa, sans trop se casser la tete. D´autant plus qu´avec les tools d´aujourd´hui ça devient incontournablement la source de tout effet qui se respecte dans tout bon block buster du game dev ^^

Pour plus d´info cf la doc nvidia, microsoft et opengl dispo respecitvements dans les SDKs et le site web de SGI..

voilou j´espere t´avoir eclairé sans avoir trop dit de baitizes...

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment