Irrlicht Parralaxmapping.. c++ besser als PB ? why failed dx

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Irrlicht Parralaxmapping.. c++ besser als PB ? why failed dx

Beitrag von Max_der_Held »

erstmal hallo, und danke für alle antworten im Vorraus.
wir machen grad ein rollenspiel in irrlicht und es muss fast mindestens bumpmapping oder parallaxmapping eingebaut sein :)

man kann mit irrlicht parallaxmapping verwenden. zumindest in C++ geht das reibungslos, ohne Shaderkenntnisse (wobei man die auch benutzen könnte.. evtl.. k.a.)

jedoch siehts bei Purebasic anders aus.
  • 1. wenn ich DirectX9 verwende wird gar nichts angezeigt.
    2. bei OpenGL [edit1] läuft normalmapping, der parallaxmapping-befehl wird gerade bearbeitet[/edit1]

    unter C++ mit irrlicht 1.4 sieht die gleiche kugel so aus (leicht verzerrt, durch ulead gif animator)

    Bild
[edit1] --text entfernt von wegen kann der wrapper parallax..--[/edit1]

ps: Code: (wenn möglich in purebasic\examples\irrlichtwrapper\" ordner verschieben, oder das imagegadget mit dem Logo vom irr3drequester einfach rauskommentierren.)

Code: Alles auswählen

#demo = 0

XIncludeFile #PB_Compiler_Home + "examples\irrlichtwrapper\Irr3DRequester.pb"
If Irr3DRequester()
   
  IrrSetAmbientLight( 111,111,111)
  IrrSetWindowCaption( "nice shader effekt  - irrlicht - Max A. = Draufgeher " )
  IrrSetTextureCreationFlag(#IRR_ETCF_ALWAYS_32_BIT, 1)

    *font.l = IrrGetBuitInFont()
    ;  ------------------------ licht ------------------------------
    licht = IrrAddLight( 10, 210 , 10 , 233,23,23,2333)
    *bill = IrrAddBillBoardToScene( 60,60,10,210,10)
    IrrSetNodeMaterialTexture     ( *bill , IrrGetTexture( #PB_Compiler_Home + "examples\irrlichtwrapper\media\fireball.jpg") , 0)
    IrrSetNodeMaterialType        ( *bill , #IRR_EMT_TRANSPARENT_ADD_COLOR)
    IrrSetNodeMaterialFlag   ( *bill , #IRR_EMF_LIGHTING , 0)
    IrrSetNodeMaterialFlag   ( *bill , #IRR_EMF_FOG_ENABLE , 0)
    
    IrrAddChildToParent      ( *bill , licht)
    
    IrrAddFlyCircleAnimator  ( licht , 10 , 210 , 10 , 2000 , 0.001 , 1 , 1 , 1)
   
   ; --------------------------- PARALLAX EARTH ------------------------------
    
    CompilerIf #demo
    text1.s = OpenFileRequester( "Lade die TEXTUR" , GetHomeDirectory() , "bilder|*.bmp;*.jpg;*.jpeg;*.png;*.tga;*.tiff|*.*|*.*" , 0 )
    text2.s = OpenFileRequester( "Lade die RGB Normalmap" , GetHomeDirectory() , "bilder|*.bmp;*.jpg;*.jpeg;*.png;*.tga;*.tiff|*.*|*.*" , 0 )
    CompilerElse 
    text1.s = #PB_Compiler_Home + "examples\irrlichtwrapper\Media\terrain-texture.jpg"
    text2.s = #PB_Compiler_Home + "examples\irrlichtwrapper\Media\terrain-heightmap.bmp"
    CompilerEndIf 
    
    *node.l = IrrAddSphereSceneNode( 110 , 100)
    IrrSetNodePosition             ( *node ,0,0,-10)  
    IrrSetNodeScale                ( *node , 0.6 , 0.6 , 0.6)
    *texture.l = IrrGetTexture     ( text1 )
    IrrSetNodeMaterialTexture      ( *node ,*texture,0)
    
    IrrSetNodeMaterialTexture      ( *node , IrrGetTexture(text2),1)
    IrrSetNodeMaterialFlag         ( *node , #IRR_EMF_LIGHTING, 0);
    IrrSetNodeMaterialType         ( *node , #irr_emt_parallax_map_solid )
    ; IrrAddRotationAnimator         ( *node , 0 , 0.1 , 0)
    ; ---------------------------Sky box ------------------------------------
    *IrrSkyBox = IrrAddSkyBoxToScene( IrrGetTexture(#PB_Compiler_Home + "examples\irrlichtwrapper\media\irrlicht2_up.jpg"),IrrGetTexture(#PB_Compiler_Home + "examples\irrlichtwrapper\media\irrlicht2_dn.jpg"),IrrGetTexture(#PB_Compiler_Home + "examples\irrlichtwrapper\media\irrlicht2_lf.jpg"),      IrrGetTexture(#PB_Compiler_Home + "examples\irrlichtwrapper\media\irrlicht2_rt.jpg"),        IrrGetTexture(#PB_Compiler_Home + "examples\irrlichtwrapper\media\irrlicht2_ft.jpg"),        IrrGetTexture(#PB_Compiler_Home + "examples\irrlichtwrapper\media\irrlicht2_bk.jpg"))
    
    ; --------------------------- Camera --------------------------------------
    
    *OurCamera         = IrrAddFPSCamera()
    IrrSetNodePosition ( *OurCamera, -100,50,100)
    IrrSetCameraTarget ( *OurCamera, 0,0,0 )
    IrrHideMouse       ( )
  
  While IrrRunning()
      IrrBeginScene( 240, 255, 255 )
      IrrDrawScene()
      IrrDrawGUI()
      IrrEndScene()
      
      If getasynckeystate_(#VK_ESCAPE )
         IrrStop()
         End 
      EndIf 
      
  Wend
  
  IrrStop()
EndIf


End
Zuletzt geändert von Max_der_Held am 08.11.2008 18:24, insgesamt 2-mal geändert.
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

Sollte zumindest mit der 1.4 fuktionieren :)
Werds mir mal anguggen - zumindest hab ich nun langsam wieder Zeit was zu machen. (/ç(/ç Arbeit ! *g*


Cheers, Thalius
"...smoking hash-tables until until you run out of memory." :P
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Beitrag von Max_der_Held »

hey danke für die Antwort

vielleicht sponsort dich Fred ja mal, um die Purebasic-irrlicht engine flot weiterzuentwickeln ;)

derweil versuchen wir über HLSL auszuweichen.

viel erfolg noch mi'm wrappen, die nächste Version wird schon sehnlichst erwartet :)

Max.
xperience2003
Beiträge: 972
Registriert: 04.10.2004 18:42
Computerausstattung: Amiga, LinuxMint, Windows7
Wohnort: gotha
Kontaktdaten:

Beitrag von xperience2003 »

kann der Irrlicht wrapper im Moment also eigendlich schon Parallax und bumpmapping?
wenn man shader einbinden kann, dann kann der den auch , egal ob toon
schraffur, bumpmap oder einfach nur shaderbenutztung fuer beleuchtung
alles einbinden

die idee parallax und bumpmap zu mixen ist gut, weil parallax
so komische stufen macht, wenn man ganz nah an das mesh rangeht

so wie es aussieht ist der shader also engine intern, das ist schlecht
jedenfalls braucht man fuer parallax und bumpmap
eine normale, eine heightmap und die colormap
in deinem code hast du allerdings nur die normal und die color

zudem wird der shader auf eine lichtquelle regieren, solltest vielleicht mal ein licht setzen, oder wenn du irgendwo eins hast, es mal ausschalten
...aber ohne den shadercode zu sehen, kann man da garnichts sagen
amiga rulez...
Rebirth Software
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

Der interne ist einfachheitshalber simpel.

n normales Shader example ist noch geplant fuer tips sektion. Imo muss ich aber mal sehn was ich fuer 1.4.2 flicken muss ( out-of-the-svn wär auch zu schön gewesen ) =P

Thalius
"...smoking hash-tables until until you run out of memory." :P
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

ISt deine Grafikkarte aktuell genug? Unterstüzt sie DirectX9?
xperience2003
Beiträge: 972
Registriert: 04.10.2004 18:42
Computerausstattung: Amiga, LinuxMint, Windows7
Wohnort: gotha
Kontaktdaten:

Beitrag von xperience2003 »

Grafikkarte aktuell genug?
wird er wohl haben, sonst wuerde das prog abbrechen oder die kugel waere schwarz
Irrlicht Parralaxmapping.. c++ besser als PB ?
allerdings erkenne ich an der frage, dass er eigentlich garnich weiss was er macht
amiga rulez...
Rebirth Software
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Beitrag von Max_der_Held »

XD lol. an einem alten thread, der nicht aktualisiert wurde.. vielleicht hätte ich das tun sollen.

die Grafikkarte heißt Geforce 8800 GTX und Radeon Xpress 200m
das Problem war 1. das mehrfache Verwechseln von normalmap und heightmap (ok.. peinlichpeinlich)
und 2. dass bei DirectX 9.0c der Bildschirm schwarz bleibt trotz update von Treiber und derzeitigem DX update (auf beiden PCs, siehe grafikkarten oben.. bei Thalius aber gehts lol ^^ )

Also, bei irrlicht muss die Heightmap in den Alphakanal des PNG-normalmap-bildes. Ein kleiner bug verhindert bisher das direkte Verwenden des parallaxshaders, nichts Weltbewegendes.

ps: nein, ich kann (noch) kein hlsl, habe im Moment aber auch keine Zeit, neben 3 referaten und Deutschschulaufgabe (langfristig: neben dem Abschlussjahr) HLSL oder GLSL intensiv zu erlernen. Darum freue ich mich über eingebaute Shader ;)
Antworten