SoftPixel Engine Wrapper - jetzt mit PhysicsEngine!

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite Zurück  1, 2, 3  Weiter

Worklogs SoftPixel Engine Wrapper - jetzt mit PhysicsEngine!

Release: v.2.1.4-beta

Mittwoch, 25. August 2010 von LukasBanana
Wieder ein kleines neues Release - jaja, es geht voran, wenn auch nur langsam Wink
Eine Funktion wurde umbenannt: EntityCullMode -> MeshCullMode
An sonsten sind die Funktionen "CopyImage" und "CopyTexture" hinzu gekommen.
Ein weiteres Beispiel (InstancingEmulation) mit 25*25 animierten "dragon.md2" modellen. 50*50 ist auch noch gut machbar, mit standard B3D wäre man da schon lange an der Grenze.
Und ein paar interne Bug fixes natürlich. Außerdem sollten Funktionen wie "VertexCoords", "CreateSurface" & co. jetzt deutlich stabieler sein.
Zudem wurde in der Engine selbst der X mesh loader weiter entwickelt.

Release: v.2.1.3-beta

Sonntag, 15. August 2010 von LukasBanana
Heute habe ich den Wrapper 2.1.3-beta veröffentlicht. SPE interne Dinge wurden überarbeitet, darunter folgendes:
- 3DS Mesh Loader, der nun korrekt funktionieren sollte. Allerdings unterstützt er derzeit noch keinerlei Animationen - diese sollen aber später noch hinzugefügt werden.
- Der X Mesh Loader wurde überarbeitet, ist allerdings noch nicht fertig.
- TGA Image Loader lädt nun korrekt (danke an "P0br3" aus dem SPE Forum für den Bug Report)

Wrapper spezifisch wurde folgendes aktuallisiert:
- AddVertex sollte nun nicht mehr ohne Weiteres Fehler verursachen.
- RotateImage wirkt sich nun schon mal auf "DrawImage" aus.

Sonstiges:
- Geometry Shader für OpenGL 3.3 verfügbar.
- "UseDirect3D11" Funktion wurde hinzugefügt, kann allerdings noch nicht genutzt werden (aus verschiedenen Gründen - muss mir erst noch über legen, wie man in B3D die DX11 API gut nutzen kann, denn im Shader hat sich da einiges geändert).

Was die Shader anbelangt, so hat sich da die API im Wrapper ein klein wenig verändert. Die Beispiele wurden natürlich alle auf die aktuelle Version angepasst, dort könnt ihr also sehen, wie man nun mit Shadern arbeitet Wink

Gruß,
Lukas

Helfer erwünscht

Freitag, 16. Juli 2010 von LukasBanana
Der ein oder andere hatte schon mal gefragt, wie er bei dem SPE Wrapper mit helfen könne.
Heute habe ich das "SoftPixel Engine Team" erstellt. Da ist jeder willkommen, der zu dem Projekt etwas beitragen möchte.

Wo könnt ihr mir helfen?
* C++ Programmierung: Wer C++ programmieren kann und will der kann gerne versuche, den Wrapper (SoftPixelEngine/sources/wrapper/) weiter voran zu bringen.
Den neuen Code kann er mir dann schicken.

* Blitz3D Programmierung: Wer sich mit den Techniken in Blizt3D sehr gut auskennt, kann mir gerne dabei helfen eine gute Schnittstelle zwischen der SPE und Blitz3D zu finden. Beispiele und Fehler-report wären da super.

* Video Demonstrationen: Richtet sich nicht nur an Wrapper Beispiele sondern prinzipiell an SPE Demos. Ihr könnt selbst entwickelte oder fertige Beispiele aus dem SPE SDK Packet oder die Wrapper Demos als Video auf YouTube hochladen, damit ich solche auf der SPE Homepage vorstellen kann. Solche Videos machen sich immer besser als statische Bilder.

* Tutorials: Wer SPE Tutorials für B3D (mit den neuen Features wie u.a. den Shadern) oder in C++ schreiben möchte, kann das geren tun. Diese würde ich dann im SPE Forum reinstellen. Das kann natürlich auch jeder selbst machen, der im SPE Forum angemeldet ist.

Sagt mir bescheid, wenn ihr Interesse habt, etwas zu dem Projekt bei zu tragen.
lg Lukas

Direct3D11 VideoDriver

Donnerstag, 8. Juli 2010 von LukasBanana
Hallo,
derzeit arbeite ich weniger am Wrapper, da ich die SoftPixel Engine selbst natürlich auch mal wieder voran bringen will.
Aber es lohnt sich Wink auch für euch B3D Nutzer.
Denn die nächste SPE Version 2.1 und damit auch die nächste Wrapper Version wird einen Direct3D11 Video Driver haben!! Ja ihr habt richtig gelesen ^^ natürlich wird bis zum nächsten Release noch nicht alles 100%ig fertig sein, aber ich komme bisher gut mit der DX11 API voran.

Was erwartet euch damit? (natürlich erst mal vorweg gegriffen, ich bin ja noch am Anfang mit dem VideoDriver)
- Tessellation (mittels Hull- und Domain Shader)
- Compute Shader (für GPGPU, z.B. RayTracing, CollisionDetection etc.)
- Geomety Shader

Man sollte sich natürlich bei DX11 gut mit Shadern auskennen ^^

Sicher dauert das alles noch eine ganze Weile, aber ich möchte natürlich das Kommende schon mal ankündigen.
Ich hoffe, ich kann dann zum Release auch schon ein Tessellation Beispiel mitliefern ...

Für mehr Infos hier ein Link zum Thread in meinem Forum:
http://www.hlc-games.de/forum/...&t=185

Zum Spaß ein Beispiel was ihr damit an neuer Arbeite habt, wenn der Renderer rauskommt:
Code: [AUSKLAPPEN]
UseDirect3D11()

Laughing

Release: v.2.1.2-beta

Dienstag, 8. Juni 2010 von LukasBanana
Und wieder eine kleine Aktuallisierung.
Danke einigen Bug-reports von euch, kann ich Fehler besser beseitigen Very Happy
Wieder zwei neue Demos sind hinzugekommen.
Insgesammt gibt's jetzt 8 Stück.
Das 8. ist eine Shader library für GLSL und auch endlich HLSL!
Viel Spaß beim Herunterladen.
Mfg Lukas

SoftPixel Engine Wrapper 2.1.1-beta

Freitag, 4. Juni 2010 von LukasBanana
Und wieder ein kleines Update für zwischen durch Very Happy
Nicht nur neue Funktionen oder Features wurde hinzugefügt, auch Altes wurde verbessert bzw. erweitert.
Darunter z.B. Kamera Einstellungen wie "CameraFogMode" etc. die vorher nur für alle Kameras global gesetzt werden konnten.
Viel Spaß beim Herunterladen und ausprobieren Wink

Die nächsten features!

Mittwoch, 2. Juni 2010 von LukasBanana
Hi, hier möchte ich euch mal kurz die nächsten erhältlichen Features vorstellen.
Natürlich versuche ich immer noch unter B3D bereits erhältliche Funktionen weiter zu implementieren.
Aber es soll natürlich auch ein Anreitz sein, neue Features nutzen zu können.
Hier erst mal einen Screenshot von dem Source-code und dem Ergebnis mit EchtzeitSchatten:

user posted image

Ihr seht an hand des codes, dass lediglich "EntityShadow" und "LightShadow" aufgerufen werden muss, um den Echtzeitschatten zu aktivieren Very Happy
(100% funktioniert der realtime-shadow leider noch nicht, mehr dazu im SPE Forum)

Weitere featuers werden sein:
- Einstellbare Texturefilter: Bi-linear/ Tri-linear/ Anisotropisch (2x, 4x, 8x, 16x ...)
- Modelcombiner
- RenderWorldStereo
- MeshReferences

Weitere B3D features die implementiert werden:
- Animationen (SetAnimKey usw.)
- Kollision (CollisionX bis CollisionNZ etc.)
- CaptureWorld
- Texture blend modes, scaling etc.
- ...

SoftPixelEngine Wrapper 2.1-beta released!

Donnerstag, 27. Mai 2010 von LukasBanana
Und? Was hab ich gesagt ^^ schon ist die neue Version hochgeladen Very Happy
Viel Spaß beim Downloaden und ausprobieren.
Für die 4. Demo braucht ihr allerdings auf jeden Fall OpenGL 2.0 weil die Shader derzeit nur in GLSL geschrieben sind.
(Wer sich mit Shadern auskennt kann gerne versuchen die Shader in HLSL um zu schreiben ^^)
Gruß,
Lukas

Re: Shader Demo und SPE Wrapper 2.1-beta sind auf dem Weg

Donnerstag, 27. Mai 2010 von LukasBanana
Noch mal kurz zu der Shader Demo: heute abend oder morgen will ich schon die neue Wrapper Version mit der Demo veröffentlichen! Very Happy
Denn die Demo funktioniert bereits und sieht genau so aus wie bei der C++ Version Wink

Natürlich besteht ein Release noch aus nebensächlichen Arbeiten daher kann es sein, dass ich noch bis morgen brauche, aber ihr kennt mich ja: ich hab zu wenig Geduld um bis morgen zu warten Laughing

Zum Vorgeschmack zeige ich euch hier schon mal den gesammten Code, damit ihr euch schon mal mit den neuen Funktionen vertraut machen könnt:

Code: [AUSKLAPPEN]

; SPE Wrapper Demo4 - 23.5.2010
; === Shader demonstration ===
; For bug report, please join our community at: "www.hlc-games.de/forum"

; SoftPixel Engine Wrapper include file
Include "SoftPixelEngineWrapper.bb"

; Initialization
Const ScrWidth = 800
Const ScrHeight = 600

; This version only runs with OpenGL because the shader files are GLSL-Shader!
UseOpenGL()

Graphics3D(ScrWidth, ScrHeight, 32)
AppTitle("SPE Wrapper Demo4 - Shader Demonstration")

HidePointer

; Create basic objects
Global cam = CreateCamera()
PositionEntity(cam, 0, 1, 0)

light = CreateLight()
TurnEntity(light, 45, 0, 0)

CameraRange(cam, 0.1, 1000.0)

; Load all textures
HeightFieldTex    = LoadTexture("../media/HeightField.jpg")
GroundTex      = LoadTexture("../media/Grass.jpg")
DetailTex      = LoadTexture("../media/DetailTexture.jpg")

SkyTexBack      = LoadTexture("../media/sky_north.jpg")
SkyTexFront      = LoadTexture("../media/sky_south.jpg")
SkyTexTop      = LoadTexture("../media/sky_up.jpg")
SkyTexBottom   = LoadTexture("../media/sky_down.jpg")
SkyTexLeft      = LoadTexture("../media/sky_west.jpg")
SkyTexRight      = LoadTexture("../media/sky_east.jpg")

Global RefractionMap   = CreateTexture(ScrWidth, ScrHeight, 1)
Global ReflectionMap   = CreateTexture(ScrWidth, ScrHeight, 1)
Global BumpMap         = LoadTexture("../media/WaterBumpMap.jpg")
Global WaterSurfaceMap   = LoadTexture("../media/WaterSurface.jpg")

ScaleTexture(DetailTex, 1.0/15, 1.0/15)
ScaleTexture(BumpMap, 1.0/14, 1.0/14)
ScaleTexture(WaterSurfaceMap, 1.0/10, 1.0/10)

; Load height field:
; Parameters: { HeightFieldTexture, GridSize (64*64*2 triangles), Parent }
ground = LoadHeightField(HeightFieldTex, 64)

PositionEntity(ground, 0, -1, 0)
ScaleEntity(ground, 50, 6, 50)

EntityTexture(ground, GroundTex, 0, 0)
EntityTexture(ground, DetailTex, 0, 1)

; Set the texture environment for the detail texture:
; Parameters: { Surface, Texture index, Environment mode }
; Environment modes:
; 0: Modulate
; 1: Replace
; 2: Add
; 3: AddSigned
; 4: Subtract
; 5: Interpolate
; 6: Dot3
TextureEnvironment(GetSurface(ground, 1), 1, 3)

; Create a house
house = LoadMesh("../media/dom.3ds")
PositionEntity(house, 20, 4.5, -20)
RotateEntity(house, 90, 80, 0)

; Create a skybox
Global skybox = CreateSkyBox(SkyTexBack, SkyTexFront, SkyTexTop, SkyTexBottom, SkyTexLeft, SkyTexRight, 100, 1)

; Water plane (no endless plane)
Global water = CreatePlane(1, 0, 1.0)
ScaleEntity(water, 50, 50, 50)
Global WaterPlaneHeight# = 0.0

; Set water plane cull mode:
; Parameters: { Entity, Mode (0 -> front culling, 1 -> back culling, 2 -> no culling/ both sides are visible) }
EntityCullMode(water, 2)

; Configure fog for under water effect
CameraFogColor(cam, 30, 100, 70)
CameraFogRange(cam, 30, 70)
ClsColor(255, 255, 255)

; Load the shader files:
; For OpenGL shaders (GLSL) the last two parameters can be empty ("").
; For DirectX shaders (HLSL) the last two parameters must be the name of vertex-main-function and pixel-main-function.
Global WaterShader = LoadShader("../media/ShaderWaterVert.txt", "../media/ShaderWaterFrag.txt", "", "")

; Set the shader constants
SetShaderInt(WaterShader, "RefractionMap", 0)
SetShaderInt(WaterShader, "ReflectionMap", 1)
SetShaderInt(WaterShader, "WaterSurfaceMap", 2)
SetShaderInt(WaterShader, "BumpMap", 3)

SetShaderFloat(WaterShader, "Width", Float(ScrWidth))
SetShaderFloat(WaterShader, "Height", Float(ScrHeight))

; Add the textures to the water plane
EntityTexture(water, RefractionMap, 0, 0)
EntityTexture(water, ReflectionMap, 0, 1)
EntityTexture(water, WaterSurfaceMap, 0, 2)
EntityTexture(water, BumpMap, 0, 3)

Global TexPos# = 0.0
Global MirrorMat = CreateMatrix()

; Bind the water shader
SetShader(water, WaterShader)

; Main loop
Repeat
   
   UpdateMovement()
   
   RenderWaterPlane()
   
   RenderWorld
   
   Flip
   
Until KeyDown(1)

; Don't forget to end graphics! Otherwise your application will cause a memory leek
EndGraphics
End

; Update movement function (user control etc.)
Function UpdateMovement()
   
   ; Move camera free (use W/A/S/D)
   ; Parameters: { Camera (default 0 -> current camera), MoveSpeed (default 0.25),
   ;                TurnSpeed (Default 0.25), MaxTurnDegree (Default 90.0), UseArrowKeys (default true) }
   MoveCameraFree(cam, 0.1, 0.25, 90.0, False)
   
   ; Move the water plane up/down
   If KeyDown(200) Then WaterPlaneHeight = WaterPlaneHeight + 0.01
   If KeyDown(208) Then WaterPlaneHeight = WaterPlaneHeight - 0.01
   
   PositionEntity(water, 0, WaterPlaneHeight, 0)
   
   ; Move water surface texture
   PositionTexture(BumpMap, 0, TexPos)
   PositionTexture(WaterSurfaceMap, 0, TexPos)
   TexPos = TexPos + 0.005
   
   ; Set the skybox's position
   PositionEntity(skybox, EntityX(cam), EntityY(cam), EntityZ(cam))
   
End Function

; Water shader effect function
Function RenderWaterPlane()
   
   ; Temporary variables
    UnderWater   = False
   PlaneDir#   = 1.0
   
    ; Configure under water statement
   HideEntity(water)
   
   If EntityY(cam, True) < EntityY(water, True) Then UnderWater = True
   
    SetShaderInt(WaterShader, "UnderWater", UnderWater)
   
   If UnderWater
      CameraFogMode(cam, 1)
      PlaneDir# = -1.0
   Else
      CameraFogMode(cam, 0)
   EndIf
   
   ; Configure refraction scene
   CameraMirror(cam, False)
   
   ; Set clipping plane:
   ; Parameters: { Index (0 - 7), Enable, Plane Normal NX, NY, NZ, Plane Distance }
   SetClipPlane(0, True, 0, -PlaneDir, 0, PlaneDir * WaterPlaneHeight)
   
   SetBuffer(TextureBuffer(RefractionMap))
   RenderWorld
   SetBuffer(BackBuffer())
   
   ; Configure reflection scene
   If Not UnderWater
      ; Set mirror matrix
      MatrixReset(MirrorMat)
      MatrixTranslate(MirrorMat, 0, WaterPlaneHeight*2, 0)
      MatrixScale(MirrorMat, 1, -1, 1)
      
      CameraMirrorMatrix(cam, MirrorMat)
      CameraMirror(cam, True)
      
      ; Disable front face culling
      FrontCulling(False)
      
      ; Set clipping plane
      SetClipPlane(0, True, 0, 1, 0, -WaterPlaneHeight)
      
      SetBuffer(TextureBuffer(ReflectionMap))
      RenderWorld
      SetBuffer(BackBuffer())
      
      ; Disable camera's mirror matrix and front face culling
      CameraMirror(cam, False)
      FrontCulling(True)
   EndIf
   
   ; Back settings
   SetClipPlane(0, False, 0, 0, 0, 0)
   
   ShowEntity(water)
   
End Function



; ====================


Mfg Lukas

Shader Demo und SPE Wrapper 2.1-beta sind auf dem Weg ...

Dienstag, 25. Mai 2010 von LukasBanana
Ich arbeite gerade an einer Shader Demo um die WasserSimulation für den Wrapper bereit zu stellen.
Sobald diese Demo fertig ist, werde ich sie mit der SPE Wrapper Version 2.1-beta veröffentlichen Wink
Freut euch also schon mal auf ein hübsches Shader Programm für Blitz3D Very Happy

Gehe zu Seite Zurück  1, 2, 3  Weiter