2D BumpMapping

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Arthur
Beiträge: 114
Registriert: 03.03.2009 19:40

2D BumpMapping

Beitrag von Arthur »

Hallo Leute,
Ich habe folgendes Problem und zwar möchte ich für ein Game, 2D Bump- bzw. NormalMappung haben. Es gibt zwar Beispiele mit Code sogar, aber diese sind vieeeeeel zu langsam für ein Game da es die 2D Drawingbefehle nutzt!

Hier die Beispiele aus der PureArea.net Projecte seite:
Bild
http://www.purearea.net/pb/download/programs/bump.zip
und
Bild
http://www.purearea.net/pb/download/pro ... umpMap.zip

Ich würde lieber gern das PB 4.3 interne DX9 verwenden, und die Bumpmapping Berechnungen über due GPU laufen lassen, also die Grafikkarte. Dazu benötige ich aber das DX9 Surface von PB.
Kann mir da bitte jemand helfen?


Mit freundlichen Grüßen
Arthur from UnionBytes
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: 2D BumpMapping

Beitrag von mpz »

Hi Arthur,

unter DX9 erstellst Du eine Textur und kannst diese dann mit dem Befehl D3DXComputeNormalMap in eine Normalmap umwandeln. Ein Surface benötigst Du nicht (wobei es eine Trennung von Surface und Textur nicht wirklich gibt). Dieser Vorgang dauert aber immer ein paar ms. Es ist auch möglich dieses mit einer Textur -> Shader -> Render to Textur zu machen um eine GPU zu benutzen, ist aber ungleich umständlicher. Ich habe Dir ein einfaches Programm mit meiner Engine geschrieben um eine Normalmap aus einer Grafik als Normal.jpg zu speichern. Hier habe ich der einfachhalber die Helligkeit des Bildes zur Erzeugung der Normalmap genommen, man kann auch Rot, Gelb oder Blau dazu nehmen. Ich hoffe das Dir dies etwas weiter hilft.

P.S. Ich habe auch mal einen Texturshader hier veröffentlicht der Dir zeigt wie man mit PB unter DX9 eine Textur erstellt, ich finde nur gerade den Link nicht...

http://rapidshare.de/files/48775115/Cre ... l.exe.html

MP3D_Engine:

Code: Alles auswählen

Textur = MP_LoadTexture(File.s)
TexturNormal = MP_CreateNormalMap(Textur, 4, 25) ; Erzeugt eine Normal Map mit Stärke 25 aus Helligkeitswerten von der Textur  
 MP_SaveTexture("normal.jpg", TexturNormal, 1) ; Dateiname, Textur, 1 = Erzeuge jpg
Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Arthur
Beiträge: 114
Registriert: 03.03.2009 19:40

Re: 2D BumpMapping

Beitrag von Arthur »

Ich glaube du verstehst da was falsch^^
ich möchte nicht die Normalmap-Textur herstellen, sondern ich möchte echzeit BumpMapping im Game haben^^, die texturen tell ich mit PSP her. Trotzdem Danke^^

MfG Arthur
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: 2D BumpMapping

Beitrag von mpz »

Hi Arthur,

da habe ich wirklich was falsch verstanden /:->

Um eine Bumpmap zu machen mußt Du zwei Texturen haben, die normale Textur und eine Normal Map erstellt aus der normalen Textur. Dann setzt man vor den Rendern die Texturen und SetTextureStageState für Textur 1 und 2. Wichtig ist auch noch der Lichtvector. Ein gutes Beispiel findest Du hier:
http://www.codesampler.com/dx9src/dx9sr ... mp_mapping
In dem CreateNormal.exe Beispiel von meiner letzten Email sieht Du diese Technik mit bewegenden Lichtvector. D.h. Du lädst eine Grafik, es wird eine Normal Map erzeugt und auch als Normal.jpg erstellt. Das Ergebnis wird dann gleich in dem Programm dargestellt...

Microsoft empfielt sogar drei Texturen, die normale Textur, die BumpMap und die EnvMap, allerdings habe ich diese Technik noch nicht eingesetzt, wird aber bestimmt hübsch aussehen. Wenn ich wieder mal mehr Zeit habe teste ich das noch...
http://msdn.microsoft.com/en-us/library ... S.85).aspx

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Antworten