Fragen zu Xors3D auch hier möglich?
Übersicht

HeikoBetreff: Fragen zu Xors3D auch hier möglich? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielleicht kennt ja der ein oder andere diese Library, für welche es wrapper für Blitz3D und BlitzMax gibt.
Im großen Ganzen wurden die Befehle von BB3D übernommen, und DX9 fähig gemacht. Hinzugekommen sind Shader etc. Ich habe mir die Quellcodes angeschaut, und mich würde eine Frage bezüglich der dortigen Backbufferverwendung interessieren, weiß aber nicht, ob ich einfach hier ein Stück code aus den samples dort hier posten kann, um es mir erklären zu lassen. Link zur Webseite: www.rubux.net |
||
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erste Regel beim Fragen stellen: Niemals fragen, ob man fragen darf. | ||
Starfare: Worklog, Website (download) |
Heiko |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mmmm okay, warum wird hier im code zwischendurch gerendert und dann setbuffer backbuffer gesetzt, und dannach die shader ausgeführt???
Code: [AUSKLAPPEN] ;========================================================
;= Shadow Mapping Demo = ;======================================================== Include "b3d_dx9.bb" ;initialization xAppTitle "Shadow Mapping" xGraphics3D 800, 600, 32, False, 0 ; the size of shadowmap texture Const SMAP_SIZE = 1024 ;setting texture filtering mode xSetTextureFiltering TF_ANISOTROPIC ;enabling antialiasing xAntiAlias True ;objects loading test = xLoadMesh("..\media\sm_scene.b3d") robo = xLoadAnimMesh("..\media\robot2.b3d") xPositionEntity robo, 30, 0.8, 0 xScaleEntity robo, 5, 5, 5 walk = xExtractAnimSeq(robo, 0, 30) xAnimate robo, 1, 0.3, walk xUpdateNormals robo ;creating the camera cam = xCreateCamera() xPositionEntity cam, 100, 100, 100 xRotateEntity cam, 35, 135, 0 pivot = xCreatePivot() cam2 = xCreateCamera(pivot) xPositionEntity cam2, 0, 130, -130 xRotateEntity cam2, 45, 0, 0 xCameraViewport cam2, 0, 0, SMAP_SIZE, SMAP_SIZE xCameraClsColor cam2, 255, 255, 255 xHideEntity cam2 ;creating the sun ;) sun = xCreateSphere(16, cam2) xScaleEntity sun, 5, 5, 5 ;font loading arial = xLoadFont("Arial", 12) ;creating the texture for a shadowmap smap = xCreateTexture(SMAP_SIZE, SMAP_SIZE, 16 + 32 + 256) ;256 - èñïîëüçîâàíèå float-point òåêñòóðû (D3DFMT_R32F) ;shaders loading sm_vs1 = xLoadVertexShader("..\shaders\sm_vs1.txt", "main", VS_2_0) sm_vs2 = xLoadVertexShader("..\shaders\sm_vs2.txt", "main", VS_2_0) sm_ps1 = xLoadPixelShader("..\shaders\sm_ps1.txt", "main", PS_2_0) sm_ps2 = xLoadPixelShader("..\shaders\sm_ps2.txt", "main", PS_2_0) ;main loop While Not xKeyDown(1) Or xWinMessage("WM_CLOSE") ;rendering the scene to the shadowmap xSetBuffer xTextureBuffer(smap) ;switching the cameras xHideEntity cam xShowEntity cam2 ;setting the shaders for shadowmap rendering xSetEntityVertexShader test, sm_vs1 xSetEntityPixelShader test, sm_ps1 xSetEntityVertexShader robo, sm_vs1 xSetEntityPixelShader robo, sm_ps1 ;setting the constants xSetVertexShaderMatrixSemantic test, "matWorldViewProj", WORLDVIEWPROJ xSetVertexShaderMatrixSemantic robo, "matWorldViewProj", VIEWPROJ ;actually rendering xRenderWorld ;setting the backbuufer as a rendertarget xSetBuffer xBackBuffer() ;switching the cameras back xHideEntity cam2 xShowEntity cam ;setting the shaders for a final rendering xSetEntityVertexShader test, sm_vs2 xSetEntityPixelShader test, sm_ps2 xSetEntityVertexShader robo, sm_vs2 xSetEntityPixelShader robo, sm_ps2 ;writing the view and projection matrices of the second camera to the additional matrix xSetAdditionalMatrix(cam2, 0, ADDVIEW) xSetAdditionalMatrix(cam2, 1, ADDPROJ) ;setting the constants xSetVertexShaderMatrixSemantic test, "matWorldView", WORLDVIEW xSetVertexShaderMatrixSemantic test, "matProj", PROJ xSetVertexShaderMatrixSemantic test, "matLightView", ADDITIONAL1 xSetVertexShaderMatrixSemantic test, "matLightProj", ADDITIONAL2 xSetVertexShaderMatrixSemantic test, "matViewInv", VIEWINVERSE xSetPixelShaderTexture test, "samShadow", smap xSetPixelShaderInt test, "SMAP_SIZE", SMAP_SIZE xSetPixelShaderVectorF test, "vLightPos", xEntityX(cam2, True), xEntityY(cam2, True), xEntityZ(cam2, True) xSetPixelShaderMatrixSemantic test, "matView", VIEW xSetPixelShaderEntityTexture test, "texBase" xSetVertexShaderMatrixSemantic robo, "matWorldView", VIEW xSetVertexShaderMatrixSemantic robo, "matProj", PROJ xSetVertexShaderMatrixSemantic robo, "matLightView", ADDITIONAL1 xSetVertexShaderMatrixSemantic robo, "matLightProj", ADDITIONAL2 xSetVertexShaderMatrixSemantic robo, "matViewInv", VIEWINVERSE xSetPixelShaderTexture robo, "samShadow", smap xSetPixelShaderInt robo, "SMAP_SIZE", SMAP_SIZE xSetPixelShaderVectorF robo, "vLightPos", xEntityX(cam2, True), xEntityY(cam2, True), xEntityZ(cam2, True) xSetPixelShaderMatrixSemantic robo, "matView", VIEW xSetPixelShaderEntityTexture robo, "texBase" ;camera moving If xKeyDown(KEY_W) Then xMoveEntity cam, 0, 0, 1 If xKeyDown(KEY_S) Then xMoveEntity cam, 0, 0, -1 If xKeyDown(KEY_A) Then xMoveEntity cam, -1, 0, 0 If xKeyDown(KEY_D) Then xMoveEntity cam, 1, 0, 0 If xKeyDown(KEY_PGUP) Then xMoveEntity cam, 0, 1, 0 If xKeyDown(KEY_PGDN) Then xMoveEntity cam, 0, -1, 0 ;camera rotating If xKeyDown(KEY_UP) Then xTurnEntity cam, -1, 0, 0, True If xKeyDown(KEY_DOWN) Then xTurnEntity cam, 1, 0, 0, True If xKeyDown(KEY_LEFT) Then xTurnEntity cam, 0, 1, 0, True If xKeyDown(KEY_RIGHT) Then xTurnEntity cam, 0, -1, 0, True ;light source rotating xTurnEntity pivot, 0, -0.1, 0 ;updating and rendering the world xUpdateWorld xRenderWorld ;fps and triangle counter xText 10, 10, "FPS: " + xGetFPS() xText 10, 30, "TrisRendered: " + xTrisRendered() xText 10, 60, "Up\Down\Letf\Right - rotate camera" xText 10, 80, "W\A\S\D - move camera" ;drawing the scene xFlip Wend |
||
klepto2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Relativ simpel:
Am anfang wird eine Textur erstellt, die die sogenannte Shadowmap (ode rauch Depthmap) enthält. Im mainloop wird jetzt als erstes die Depthmap in die Textur gerendert (aus der Sicht der Lichtquelle). Danach wird die Scene normal in den Backbuffer gerendert, um dabei den Schatten zu erstellen, wird nun ein Shader hinzugeschaltet, der die Tiefeninformationen aus der Depthmap mit der aktuellen Scene vergleicht und je nachdem Teile im Bild schattiert oder normal zeichnet. Wahrscheinlich keine ganzgenaue Beschreibung, aber der Weg sollte stimmen. Ich kenne mich mit den internas der Xors3D Engine nicht aus, daher nur ne grobe Analyse. |
||
Matrix Screensaver
Console Modul für BlitzMax KLPacker Modul für BlitzMax HomePage : http://www.brsoftware.de.vu |
Heiko |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
na immerhin schon eine etwas aussagekräftige erklärung.
ist halt bisschen schwer hier etwas zu posten, eine seperate xors3d section wäre natürlich toll. mir schon klar, dass es im ersten moment nicht im sinn des forums ist, aber wer sich mit xors3d ein wenig beschäftigt, dem wird klar, dass es in erster linie FÜR Blitz3D erschaffen wurde. Auch wenn ich selbst jetzt Xors3D nicht in Verbindung mit BB3D nutze, so ist die Syntax doch fast identisch. Jedenfalls wäre es einen seperaten Bereich hier wert. |
||
![]() |
coolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Solange du das ganze mit Blitz XXX schreibst kannst du alles hier fragen, Xors3d ist doch nur eine Alternative 3d Engine, das ist genauso, wie wenn jemand eine Frage über die Sprite candy schreibt ![]() |
||
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project! "Eigenzitate sind nur was für Deppen" -Eigenzitat |
Heiko |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das ist mir schon klar, ich würde ja hier auch nur bb3d code posten, aber für alle die es nutzen würden wollen, und vielleicht auch ein paar dazu kommen, wäre etwas seperates vielleicht sinnvoll.
Ein bereich zu xors3d würde ja reichen |
||
![]() |
peacemaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du bist einer der ersten der xors3D-Fragen stellt. Gleich ein neues Subforum zu machen? Ich weiss ja nicht. | ||
~Tehadon~
www.tehadon.de http://www.blitzforum.de/worklogs/14/ |
Heiko |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nein nicht gleich, ich meinte das im allg. wenn sich noch ein paar finden.
schauts euch doch einfach mal an www.rubux.net ist noch beta, aber der developer ist fixer als silby.... |
||
Mau |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Um dieses Thema mal wieder hochzuholen: ich beschäftige mich jetzt auch schon eine Weile mit der Xors3D-Erweiterung und bin eigentlich begeistert! ![]() Gerade die Möglichkeit, endlich Shaders zu benutzen (und eigene zu schreiben!) finde ich als langjähriger B3D-Nutzer einfach nur bahnbrechend. Da ich mich als B3Dler nie sonderlich mit Shader auseinandergesetzt habe, waren diese anfangs für mich eigentlich nur "optischer Schmuck". Inzwischen ist mir aber klar geworden, das sich damit auf oft sehr einfache Weise und mit guter Performance Dinge realisieren lassen, von denen man als B3Dler bisher nur vage träumen konnte und die anders eigentlich gar nicht möglich sind. Ich habe z.B. vorher wochenlang an einem Terrain-Editor gearbeitet, der nahtlose Überblendungen von Texturen erlaubt. Mit Xors3D und einem passenden Texture Splatting Shader war das im Nullkommanix möglich, ohne zusätzliche Vertices. Tiefenunschärfe-Effekte, Schatten, realistisches Wasser, alles endlich kein Problem mehr. Und die Engine scheint tatsächlich sehr kompatibel zu sein. Ich bin mir ganz sicher, das sich die Erweiterung durchsetzt. Der Entwickler scheint sehr fix zu sein und nimmt auch gerne Anregungen entgegen, die dann oft auch sehr zügig umgesetzt werden. Laut x-pressive soll es in Kürze auch nen Sprite Candy Port für Xors3D geben. Ich denke schon, das man Xors3D einen Platz einräumen sollte, denn je grösser der Xors-Benutzerkreis wird, desto mehr ist allen geholfen. |
||
Alles muss, nichts kann! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group