Blitz Hardwired - DirectX 9 Userlib (Part V)

Community Forums/Showcase/Blitz Hardwired - DirectX 9 Userlib (Part V)

Ploppy(Posted 2014) [#1]
Now that we are at the same level (or I at least hope so), and that textures work on all machines, I wish to put this behind us all and begin a new thread so we can concentrate on hardwired in general...

I have now released a new version of the userlib

Hardwired userlib / Command list here

New stuff...

dxLoadAnimTexture%(file$,flags%,frame_width%,frame_height%,first_frame%,frame_count%) - fully functional, just like b3d command
dxLoadAnimTextureFromBank%(bank%,flags%,frame_width%,frame_height%,first_frame%,frame_count%) - if you wish, with command you can load an anim texture directly from a bank

dxEntityTexture and dxSurfaceTexture now henceforth work with frames...

New z-buffer configuration
At the moment of initialising the screen with dxGraphics3D, hardwired will now determine the best z-buffer to use depending on your hardware. By default, it will set a 16-bit z-buffer which is usable on all machines. However, if the host graphics adapter permits, hardwired will set the z-buffer to a more precise 24-bit size.


Yue(Posted 2014) [#2]
Perfect!! :)


Ploppy(Posted 2014) [#3]
Rick Nasher:
BTW: I thought the dxCreateTorus command would be great for adding an asteroid belt or disk around Saturn, but doesn't it allow for textures (yet)?


Hardwired userlib / Command list here

Done.... toruses (tori??) now have texture coords...


Wolf1870(Posted 2014) [#4]
I have a small problem with the Mouse control:

msx#=msx#+dxMouseXSpeed() : dxMoveMouse(dxGraphicsWidth()/2,dxGraphicsHeight()/2)

the result of the variable msx# shows no change, reset to 0 after dxMoveMouse...


Ploppy(Posted 2014) [#5]
Okay, fixed. Thanks for that, Wolf1870. Hadn't seen that little (but important) bug. Should work now...

Hardwired userlib / Command list here


Wolf1870(Posted 2014) [#6]
Ploppy, many thanks, now works perfectly! :-))


Hotshot2005(Posted 2014) [#7]
It run so Fast n Smooth :)

Good news is if one day, you do Direct x 11 Blitz then it would be good test them as mine laptop is Direct x 11 :D


Rick Nasher(Posted 2014) [#8]
Thanks Ploppy I'll check it out. Nice (and big) command list..


GaryV(Posted 2014) [#9]
Ploppy: Do you have any issues with people using this with non-blitz languages (if they can get it to work)?


Ploppy(Posted 2014) [#10]
I have no idea if it works with non-blitz languages, but why not? The one the springs to mind the most would have to be c++ of course, but I haven't released any .lib or .h file so it wouldn't be easy to use.


N_Gnom(Posted 2014) [#11]
Its not hard to write a wrapper for some languages.For this is only the dll needed.


Yue(Posted 2014) [#12]
Hey Ploppy a question, if I can be explained simply, what is normal and what is a vector?


Hotshot2005(Posted 2014) [#13]
It is Ploppy not Floppy! Go to spec saver and get yourself 3D Glasses LOL


Ploppy(Posted 2014) [#14]
Okay, I'll try to explain what I know, but I'm sure I'll miss some things out. Anyone that can fill in the blanks, plese feel free to add to this forum....

A vector is basically an array of three floating-point variables of the x, y and z axis. A vector can be used to represent a position in xyz space, a scale (also called a scalar vector), a rotation vector (degrees around xyz axis), or a direction vector (x depicting amount to move to left/right, y for up/down and z for ahead/back).

A normal also is an array of the three axis x,y and z and also contains floating-point values. They are used to represent directions in much the same way as a vector. The difference with normals is that the figure contained in each element of the array is between 0 and 1. A vector can be 'normalised' and then becomes a normal.

An example.

Direction vector
x = 2
y = -4
z = 5

This vector will describe a direction which is to move forward and up and a little to the right.

The normal of the vector would be (if i'm not mistaken)

Object Starting position:x=10,y=10,z=10
Normal
x=0.181818181818
y=-.363636363636
z=0.454545454545

If you add the absolute value of three of these values together, the result will be 1.

What is the use of a normal in math calcuations?? Suppose you wish to move a object with a normal by a certain distance - lets say by 100. All you would need to do to find the amount to move is to multiply the distance by the each element in the normal array to find the amount you would move the 'object' in question.

x*100=18.18181818
y*100=-36.3636363
y*100=45.454545

Object new position:x=28.181818,y=-26.36363636,z=55.454545

Movements in xyz space are easier and faster to translate using a normal.

To convert a direction vector to a normal, find the total of the absolute of each element in the vector and divide each element by this total.

----------------------------------
A 'vertex normal' used in 3d modeling is generally pre-calulated for each 3d-model. Each vertex had a 'normal', which describes the direction which a vertex points. The direction is determined by the vertices that are connected to it. If the vertex is not connected to a triangle, it does not hace a normal, for normals are used by the graphics adapter to calculate how a triangle is shaded using light and camera normals into the equation.

Here is a diagram of normals for a dodecahedral mesh (image taken from wiki)



There is quite a lot you can do with vertex normals, you can even program them yourself to create your own shading and lighting effects - either with dxVertexNormal or using a normal texture map. Normal texture maps are often used in games to 'trick the eye' giving a 3d-model more detail than it geometrically has. A normal texture changes the shading of an object as if it triangle had bumps in it. I know, for example that doom 3 used normal maps extensively in their models. This gave the charaters a lot of detail. But many other games use normal maps too. Example below...





Very interesting article here if you wish to know more about normal mapping


Ploppy(Posted 2014) [#15]
New command for today...

dxMeshesIntersect%(mesh_a%,mesh_b%) - fully functional works just like b3d command, returns true is meshes intersect

As written in the description for MeshesIntersect, use with discretion. This function fully works and will check collisions between two meshes. But this is slow, it will check each and every triangle of the first mesh against each and every triangle of the second mesh. The more triangles, the more calculations...


Hardwired userlib / Command list here

demo in dxmeshesintersect.bb


Yue(Posted 2014) [#16]
New command works perfect. Thanks for the explanation on vectors and normal, you always have to learn something new.




Wolf1870(Posted 2014) [#17]
wrote a little testprogramm with a terrain and trees on it, contain a black color in the texture. Little problems with the textureflags...

- Flag 4 does not work - black is visible

- Flag 2 works (black is invisible), but the trees are behind the Terrain.
- set DxEntityOrder tree, -1 everything works perfect

- Flag 1 and dxEntityAlpha tree, 0.99 works (black is invisible), but the trees are behind the Terrain,too.
- set DxEntityOrder tree, -1 everything works perfect

and one more note: please, please still implement Flag 256 for sharp textures, in the distance everything looks terribly blurry ... Many Thanks, Ploppy!


Ploppy(Posted 2014) [#18]
Hi Wolf,
Ok, should all work now. I have checked black masking and seems fine after a bit of tweaking. As for 'blur', I have changed the default texture filters to the minimum setting, your blur should not appear now. Don't forget if you wish to change texture filter settings, you can do so at any time using the dxSetFilters command. I have put this command at the beginning of my demos, because I prefer it with smoothing (not pixelly close up). However, if you change this dxSetFilters setting or delete this line you will see the difference it makes in rendering textures to the screen.

Hardwired userlib / Command list here


Yue(Posted 2014) [#19]
:)



Ploppy(Posted 2014) [#20]
That's just me playing with the code

Delete these lines and all is fine...

dxEntityAlpha dwarf,.5
dxSurfaceAlpha dxGetSurface(dwarf,4),.5


Wolf1870(Posted 2014) [#21]
Thanks for the tip, Ploppy! Have now set dxSetFilters 1,1,0 and now it is wonderful sharp in the distance. TextureFilter 4 works well! Great!


Ploppy(Posted 2014) [#22]
There is still a little bug in my last release concerning texture masking. Try test8.bb and you'll see what I mean. Reload this, and all should be ok...

Hardwired userlib / Command list here


Wolf1870(Posted 2014) [#23]
Ploppy, insert in your mask_test.bb before the sprite: terrain = dxCreateTerrain (128,0): dxPositionEntity terrain, -15, -5,5,0
Please look at the lower surface of the masked sprites. You can see through the terrain ... Have you an idea?


Yue(Posted 2014) [#24]
test 8

Test mask

dxturnentity on sprite no work


Ploppy(Posted 2014) [#25]
That's normal - it's a sprite


Yue(Posted 2014) [#26]
OK, dxRotateSprite ??? command blitz3D rotateSprite(Sprite,Ang).


Ploppy(Posted 2014) [#27]
Yes, sure - I will put that one in...


Ploppy(Posted 2014) [#28]
Okay, I have added

dxRotateSprite(sprite%,angle#) - works just like b3d command

and I have sorted out the terrain and masking problem wolf was encountering...

Hardwired userlib / Command list here

Enjoy...


Hotshot2005(Posted 2014) [#29]
would be cool to have shadow commands?


Ploppy(Posted 2014) [#30]
Just added dxCreateCone, because I had forgot to do that one.
Hardwired userlib / Command list here

I'm not to hot on the shadow idea, these can be 'pre-baked' by the blitz-programs. I probably could produce a basic 'shadow generator', but nothing complex as I feel that a shadows complexity and look could be very diverse and at the same time dependant on the game's feel/mood. Maybe I will try something, but I think that you will have all the tools necessary (including dxRenderToTexture) to be able to generate your own shadows in the manner that feels right for you. Shaders can help also in texture and shadow generation.


Wolf1870(Posted 2014) [#31]
Thank you for your efforts and your time to solve my little problems! In any case, keep it up, Ploppy!!! :-))


Rick Nasher(Posted 2014) [#32]
@Ploppy: Of course you are right that with the power of DX9 it's very possible to do shadows. Nevertheless, an easy (fast)shadow system is always nice to have. I think it's what most people turned to FastLibraries for.
It certainly has my vote. ;-)


Yue(Posted 2014) [#33]
I do not understand, that is, with built so far can make shadows with Shaders?, Dynamic shadows?, In such a case would be good options, such as dxCreateShadow (Entity, Quality) something.


Rick Nasher(Posted 2014) [#34]
Probably something like this would also be needed:

dxSetShadowReceiver (Entity)
dxSetShadowCaster (Entity,Range,R,G,B[,texture])
dxUpdateShadows() or dxRenderShadows() for the mainloop.

Or would dx9 shadowing be completely different?


Ploppy(Posted 2014) [#35]
You're right, I have just been looking up shadow generation and looks mcuh easier to do than I first thought. I think I will do a little routine, seems like a nice addition and should be pretty quick too.

Okay, thinking cap back on. Thinking is such a bad habit to get into, horrid business...


Wolf1870(Posted 2014) [#36]
Two small problems with the terrain:
1) I create two terrains with dxCreateTerrain (128,0) and put them side by side. The distance between the two terrains is only 127 and not 128 (dxCreateTerrain (64,0) is the distance 63)
2) If I put a texture on the terrain, it will appear vertical mirrored.

and shadows would be great ... ;-)


Rick Nasher(Posted 2014) [#37]
@Ploppy: that sounds really good!


Ploppy(Posted 2014) [#38]
Almost there with shadows already (bit buggy for the moment as you can see), with a bit of luck and a day or two more and that will be done (cross fingers).



Wolf, I have vflipped out the texture for terrains, and will resize them, that's all quick and easy. Sorry about that, I just programmed the terrains a bit too quick to notice that effectivly my texture mapping was upside-down.

No update tonight, sleepy. Have worked today, am working tomorrow; when's retirement again??


Wolf1870(Posted 2014) [#39]
Ploppy, I'm trying to help you find the bugs, as far as it is possible for me. Wish you a good sleep ...


BlitzSupport(Posted 2014) [#40]
Looking really good! However, I was just trying to get this working in BlitzMax, but a simple 2D-only example freezes and/or crashes for me.

I tried it in Blitz3D and it does exactly the same. Am I doing anything wrong here?

dxGraphics3D 640, 480, 32, 2, 1

Repeat

	dxCls
	dxRect dxMouseX () - 16, dxMouseY () - 16, 32, 32, 1
	dxFlip 1
	
Until dxMouseHit (1)

End


The BlitzMax version is below, out of interest:




JBR(Posted 2014) [#41]
Same here, seems to open 2 windows if you look at the taskbar.

Works in debug mode in B3D.


Rick Nasher(Posted 2014) [#42]
Wauw, still can't believe the speed your spitting out code Ploppy. We've only just mentioned shadows and whoops there it is! Your brain must be twice the size or something..


Yue(Posted 2014) [#43]
XD power full on c++ and DirectX



Ploppy(Posted 2014) [#44]
I actually took time to go to the cinema to see Kingdom of the Crystal Skull, still want my money back today. Can remember even wincing when watching certain scenes (the fridge bit, the end scene). But I digress...

@BlitzSupport , hi there - glad you like. I have tested your program, works fine for me. Interesting bug (another one :[ ). Where exactly does it bug out, on dxRect or dxMouseX?? I reckon it's probably dxRect where the problem resides as the code is more complex with buffer access, locking, etc..

If the problem is in dxRect and you have the time, could you please try dxPlot, dxLine and dxOval for me as well. I would like to know if you have the same problem there too. Since these commands share certain functions, these may undergo the same brutal sentence.

How does it crash btw, does it freeze or give you MAV right away??


BlitzSupport(Posted 2014) [#45]
Struggling to determine what the cause is -- this just freezes until you click on the window, then you get prompted to close it as it's not responding. It's almost like it's not processing any window events:

dxGraphics3D 640, 480, 32, 2, 1

Repeat

	dxCls
	dxFlip 1
	
Until dxMouseHit (1)

End


However, this 3D example works fine:



When running from BlitzMax it gives similar problems to the first example, ie. it just stops responding after showing the first frame. (Another BlitzMax example simply gives a Windows error stating that the program has stopped working.)

Still, even focusing on Blitz3D alone, I can't see what causes the first example to fail, but my impression is that the window itself is frozen, as happens in GUI programs where events aren't being processed. Could be wrong though!


Ploppy(Posted 2014) [#46]
Thanks for bug reports everyone, 'tis great (and quick) feedback. This kind of feedback is encouraging for me as it gives the impression that you wish this userlib to reach completion and stability as much as I do. Great stuff...

BlitzSupport - I did include an event checker in the dxRenderWorld command, but I didn't think of putting it in the dxFlip command. It was indeed a windows event problem - apps have to tell windows very often that the app is still alive or else windows panics. This is why your first bb program crashed out. So, I have released a new version below, with an event checker in dxFlip. Should work better now. By the way, in your second program, you don't need dxCls if you have a created a camera and use dxRenderworld, dxRenderworld will clear the screen automatically - just like in b3d.

JBR, I have also decided to 'hide' the blitz output window when dxGraphics3d initialises a screen mode, the window will return after a dxEndGraphics. This way, only one window will ever appear at any time on the taskbar.

Wolf, textures are now right-side up in terrains. I haven't yet fixed the terrain size though. It'll come...

Hardwired userlib / Command list here

Note: test8.bb will be terribly slow for the moment for I am testing my shadow routine. Don't panic, all is normal - I am optimising my routine. It takes some time...


Wolf1870(Posted 2014) [#47]
Small note: dxCreateTerrain() works now, dxLoadTerrain() is the same Problem with the texture, please check, if you have time.
And a question: dxCameraPick works fine, dxEntityPick works already?


Ploppy(Posted 2014) [#48]
Okay, dxLoadTerrain updated.

dxEntityPick and dxLinePick do not work for the moment, the commands exist but do nothing...

Hardwired userlib / Command list here


Wolf1870(Posted 2014) [#49]
works perfect now! many thanks ...


Ploppy(Posted 2014) [#50]
Have updated shadowgen....

Shadows are great....


Only old brits like me will understand this bad visual joke


JBR(Posted 2014) [#51]
BlitzSupport's code working now.
Jim


BlitzSupport(Posted 2014) [#52]
Well done, Ploppy -- now works perfectly. Also, in addition to the event problem, it turns out I'd forgotten (yet again) to add the "win32" calling convention to my DLL calls in BlitzMax -- it also works perfectly!



The dxRect example also works now, in both Blitz3D and BlitzMax.


Rick Nasher(Posted 2014) [#53]
@Ploppy: Regarding the shadows..
Lets not forget Cliff Richard!
Thank you, your Majesty! (and I'm not even British.. ;-)


braxton(Posted 2014) [#54]
Outstanding! absolutely incredible!

Thank you so much to all involved, Ploppy especially for everything you have put into making this dream for many possible, and also to all of the testers for their continued support and words of encouragement.

I can honestly say that I have not used BlitzPlus & Blitz3D in quite a while but they still feel like old friends albeit now with a modern face lift, and it all works extremely well on Win8.1 x64 the maze test is so fast, well done!


Rick Nasher(Posted 2014) [#55]
Btw, I need to replace the speed in cam module otherwise mouselook spins way tooo fast:

dxTurnEntity cam,diff*dxMouseYSpeed()/100.0,-diff*dxMouseXSpeed()/100.0,0,0

With this change from /10.0 to /100.0 it's manageable. Anybody else having the same?


Yue(Posted 2014) [#56]
Floppy long live, long live Floppy!!. :)

We are removing the dark lands of DirectX 7 XD.


Ploppy(Posted 2014) [#57]
Respect goes to Rick for the obscure brit culture reference.


RemiD(Posted 2014) [#58]
This seems to work well on my machine.
I don't have the "see through wall" bug that i had in the previous demo in the maze.

Good luck for the next steps. :)


Buff Jigsaw(Posted 2014) [#59]
Big fan of this project. Will test anything you need for..

windows 7 64
geforece GTX 670


Ploppy(Posted 2014) [#60]
Hello all,
Shadows nearly work- not perfect yet, still a bit buggy but shouldn't crash. Please see test8.bb for demo...



New commands relative to shadows...

dxLightCaster(light,enable) - enable a light to cast a shadow (true/false); defaults to false
dxEntityCaster(entity,enable) - enable an entity to case a shadow (true/false); defaults to false

*** Please note, at least one light and one entity needs to be shadow casting enabled to be able to see any shadow rendered.

dxEnityShadowDetail(entity%,triangles%,detail_percent#) - set a entity's shadow detail, defaults to 500 traiangles

An entity's shadow does not use the same mesh as the entity, but a simplified version of the mesh. With this command, you can set the level of detail you wish of this shadow mesh relative to the entity's mesh. If you leave the triangle parameter as 0, the command will take the percent parameter as the detail setting. For a mesh with a high traingle count, it is advisable to have a lower detail or else the renderer will significantly slow down for shadow generation.

dxEnityShadowColor(entity%,color%) - you can play around with a shadow's color, if you wish to have strange effects defaults of course to 0 (black).
dxEnityShadowIntensity(entity%,intensity_percent#) - defaults to 50%
dxEnableShadows(enable%) - a global setting, with this command you can turn on or off shadow for the renderer; defaults to true
dxEnityShadowCutoff(entity%,min_distance#,max_distance#,fadein#) - sets the minimum, maximum and fade-in distance (fade-in being 0 to 1, 0=minimum, and 1=maximum) from the camera that an entity's shadow will show ; defaults to 0,10,.5 - this function will help increase render speed when shadows are distant


Yue(Posted 2014) [#61]
Where link for shadows?? new demo?


Ploppy(Posted 2014) [#62]
Sorry, forgot that bit...

Hardwired userlib / Command list here


Yue(Posted 2014) [#63]


It looks great, I guess I have yet to fix things.

I have many doubts as shadows in DirectX9 work, I've only managed shadow maps and volumetric shadows, what kind of shadows puden implemented in DirectX9?

Greetings.


Yue(Posted 2014) [#64]
Here model tree for Shadows. Textura mask.

Download:
https://dl.dropboxusercontent.com/u/39767349/Tree.rar


Ploppy(Posted 2014) [#65]
I did say it was buggy, but it is taking form. Don't worry about the graphics problems, it is not just your machine this time. It's just that I haven't yet perfected the code. But it is going in the right direction.

Thanks for the model Yue - I'll have a look at it...


Yue(Posted 2014) [#66]
Ok do not worry, if you need a change in the model as a texture that is not mascara, but alpha, inform me and I make the changes.

One concern I have is is this.

Graphics3D(800,600,32,2,1)
SetBuffer (BackBuffer())

Local Camera% = dxCreateCamera(0)
Local Cube%   = dxCreateCube(0)
Local Light%    = dxCreateLight(0,0)


dxPositionEntity Cube%,0,0,10,0

While Not dxKeyDown(1)
	
	dxTurnEntity Cube%,0,1,0,0
	dxRenderWorld(1)
	
	dxFlip(0)
Wend 
End

; Here :D
Function Graphics3D%(widht%,height%,depth%,mode%,Vsinc%)
	
	dxGraphics3D(widht%,height%,depth%,mode%,Vsinc%)
	
End Function 


Function SetBuffer%(buffer%)
	
	
	dxSetBuffer (buffer%)
	
	
End Function 

Function BackBuffer%()
	
	
	Return dxBackBuffer()
	
End Function 

Function FrontBuffer%()
	
	Return dxFrontBuffer()
End Function 



how feasible it is to do the above, I think for many it would be much easier to work, I mean Blitz3D users like me who are not programmers, would be a good idea to do this with all the commands you have created? ... something else not meeting dxcreateplane.

Greetings.


Ploppy(Posted 2014) [#67]
This is indeed very feasible, and a good idea. The best thing is to use this as an include file. There is another good thing about this as well, you can set default variables, which one cannot do with the userlibs.


Yue(Posted 2014) [#68]
Ok, I have started to work on it, the include file I called DX9.bb.

:)


Ploppy(Posted 2014) [#69]
Good luck, it's a large list.. don't forget the defaults

for example
Function EntityX#(entity%,global=true)

true is the default value for the global parameter for EntityX in b3d.


Yue(Posted 2014) [#70]
Ok, I'm basing on the command list and I've started with the global category. Most likely it touches verification.


Ploppy(Posted 2014) [#71]
You will need the blitz3d help files as a reference also for the default values


Yue(Posted 2014) [#72]
Well, this is the 0 review of Global and Graphics. I hope I have been so wrong.




Ploppy(Posted 2014) [#73]
Looks good, you are rapid - very clearly done too. However, commands such as GetFPS and Pointframe never existed in b3d, these are new commands. You can of course rename them if you like. Thanks for this, it will really add to the flexibilty of hardwired.


Yue(Posted 2014) [#74]
EDIT:

ENTITY STATE TO TEXTURE.




Rick Nasher(Posted 2014) [#75]
Very cool, that shadow system is coming together really well, and this last turn of events will make converting old code a lot faster(good idea Yue).

For new code I'd rely on the new dxCommands though cos if one wants to get the best out of, it would probably require different structures and usage of new commands anyway. But of course one could also use dx9 to enhance and build on existing code.


Yue(Posted 2014) [#76]
Since morning hour, what worries me is that the list is not as identify new commands Ploppy put our Friend. For some reason the commands go into this lib, I perceive that this is not the end Blitz3D and accept that it is a powerful library. Just as I left the bitter taste that is not all, I'm not a programmer and if I could turn back time I would consider safe programming fustrado truth ... that I feel.


LittleDave(Posted 2014) [#77]
Hi Ploppy
when you are in window mode,there is no window frame.Or close,minimize.buttons


Ploppy(Posted 2014) [#78]
I must get round to changing that, like so many other things :D


Ploppy(Posted 2014) [#79]
Okay, done LittleDave, windows now default to blitz's defaults - I have also extended on blitz's capabilities...

Here are the new commands...

dxSetVSync(enable%) - sets the default vsync setting (true/false) for any following dxGraphics3d commands; defaults to true. I have changed dxGraphics3d syntax to same syntax as b3d, removing the vsync parameter.

dxSetWindowDefaults(borderless%,minimize_button%,maximize_button%,close_button%,autoclose%) - set defaults for any following windowed graphics modes. Defaults to false,true,true,true,true.

When set to true, autoclose will automatically close a window if you click on close button (or alt+f4). When false, a close request by the user will signal hardwired that the user has requested quit without actually quitting. This way you can control better the way in which an application quits. Imagine you wish to save a few settings just before quitting after the user clicks on close or bring up a requester 'are you sure?' for example. Now you can.

dxWinClose%() - If autoclose has been set to false, this function will return true if the user has requested quit, either using the window close button or alt+f4.


Yue(Posted 2014) [#80]
Men, where link for download? :D


Ploppy(Posted 2014) [#81]
Hardwired userlib / Command list here

All links in thread point to same download...


Yue(Posted 2014) [#82]
Hey I have a question, In Blitz3D has always been a pain changing screen resolution when you have loaded the game completely, because I have to remove everything with a "EndGraphics" and load everything again to set the new resolution screen. Anyway, with this program could make a change screen resolution without eliminating any element of a scene?


:) Windows.



zeek(Posted 2014) [#83]
Hello ploppy great job your doing, I been checking out your work on this project and it is great. I was wondering if your intending on putting in a command for hard instancing, where you can put a lot of instances of one model without effecting the frames per second.


Ploppy(Posted 2014) [#84]
I don't know but maybe - I'm kind of making it up as I go along...


zeek(Posted 2014) [#85]
This is Really Good Work thanks for the reply.


JBR(Posted 2014) [#86]
Ploppy, strange one here. After I run your dx commands, some of my keys change.

Like my keyboard changes to the US version rather than UK.

Jim


Ploppy(Posted 2014) [#87]
Hi JBR, I did this deliberately, for this is what happens in B3D.


Wolf1870(Posted 2014) [#88]
@JBR what specific problems do you have?


JBR(Posted 2014) [#89]
When I press the (#) key it comes up (\)

When I press (shift 2) I get (@) rather than (")

When I press (shift 3) I get (#) rather than (pound sign)

Similar thing with the @ key. This is when I noticed it when I was trying to enter my email address after running some of Ploppy's code.

No biggy but a bit strange.


Wolf1870(Posted 2014) [#90]
...


JBR(Posted 2014) [#91]
normal control?


JBR(Posted 2014) [#92]
Hi, I can't get dxText to work. Just prints "iP"




JBR(Posted 2014) [#93]
Hi, the B3D (dx) version of the above works fine. Could it be font related with BMax?


LittleDave(Posted 2014) [#94]
@JBR I think Ploppy`s userlib is for BPlus and B3D not Bmax. :)

@Ploppy Thank you for the window controls.


Ploppy(Posted 2014) [#95]
Well, I think it should work with bmax too, after all it makes dll calls, just using the same protocol as the other compilers.

JBR, it may be font related, well at least it doesn't crash - that's something :D

Try using dxLoadFont and dxSetFont at the start of your program (after the dxGraphics3d command of course)...


JBR(Posted 2014) [#96]
Ploppy, added the dxLoadFont and dxSetFont using BMax & B3D.

The underline didn't work in both.

I still get "iP" in BMax, but the "iP" does take on the font & bold & italic.

Whatever string I try in BMax I simply get "iP".


Kryzon(Posted 2014) [#97]
You're sending a BlitzMax String object, which may not be the type of string that dText() is expecting.

Try...

Global dxText (x:Int, y:Int, text:Byte Ptr, center_x:Int, centre_y:Int) "Win32"

[...]

Local jimPointer:Byte Ptr = jim.ToCString()

dxText 10,10,jimPointer,0,0

MemFree jimPointer


Or...

Global dxText (x:Int, y:Int, text:String Ptr, center_x:Int, centre_y:Int) "Win32"

[...]

dxText 10,10,VarPtr( jim ),0,0



JBR(Posted 2014) [#98]
Kryzon, thanks.

In the end, simply changing text:String to text:Byte Ptr as in your first bit of code worked perfectly.


Ploppy(Posted 2014) [#99]
New stuff...

dxClearWorld%(entities%,brushes%,textures%) - fully functional, works like b3d
dxClearCollisions() - fully functional, works like b3d
dxCollisions(src_type%,dest_type%,method%,response%) - fully functional, works like b3d
dxTextureFilter(match_text$,flags%) - fully functional, works like b3d, haven't yet integrated into dxLoadTexture though
dxClearTextureFilters() - fully functional, works like b3d
dxScreenWidth%() - new function, returns screen's width for windowed graphics mode
dxScreenHeight%() - new function, returns screen's height for windowed graphics mode
dxWindowWidth%() - return window's current width
dxWindowHeight%() - return window's current height
dxWindowX%() - return window's current x-coordinate
dxWindowY%() - return window's current y-coordinate
dxWindowResized%() - returns true if the window has been resized
dxWindowMoved%() - returns true if the window has been moved
dxMeshSimplify%(mesh%,vertex_count%,triangle_count%,vertex_percent#,triangle_percent#) - as the name suggests, this function will simplify a mesh to the desired vertex or triangle count. Please note you can only simplify a mesh either to a vertex count or a triangle count. By default the command will take the vertex count into account, if the other parameters are zero. If however the vertex percentage isn't given this will be used instead. If the triangle parameter isn't zero, this will be used, and logically if the triangle percentage isn't zero this will be take precedence.

Example:
dxMeshSimplify(mesh,50,0,0,0) - will reduce the vertex count to 50
dxMeshSimplify(mesh,0,0,0,50) - will reduce the triangle count by 50%
dxMeshSimplify(mesh,0,0,50,0) - will reduce the triangle count to 50 triangles

The scaled windows graphics mode (mode 3) now works.

Wolf, I have corrected the dxCreateTerrain, it should have the correct size now....

Hardwired userlib / Command list here


col(Posted 2014) [#100]
@JBR

To compliment what Kryzon just explained

If .ToCString() works ok then in the function that gets called with that as a parameter you can use

Global dxText (x:Int, y:Int, text$z, center_x:Int, centre_y:Int) "Win32"

Local jim$ = "My name is Jim"

dxText 10,10,jim,0,0


You can then use normal Blitzmax strings in the function call and Blitzmax will automatically do the equivalent of .ToCString() for you.


JBR(Posted 2014) [#101]
Hi, what does $z mean? Can't find it in the docs.


Guy Fawkes(Posted 2014) [#102]
$z is a typo, it should look like this:




JBR(Posted 2014) [#103]
Hi, it's not a typo. Without the 'z' it does not work.


col(Posted 2014) [#104]
I'd say the $z stands for 'zero terminated c string' as that's what it represents ie a c string ( array of 1 byte char(s) ) which is null terminated ( ascii value zero, not the zero character which is ascii value 48). There is also $w if you want to convert to a 'zero terminated wide c string' ( 2 bytes per char ).


$z is a typo, it should look like this



Nah, the $z and $w types are undocumented helpers for passing BlitzMax strings into code thats been built out side of BlitzMax thats expecting a string as an array of ascii chars - more accurately during compilation they are resolved to a pointer to the string ascii data itself rather than a pointer to the BlitzMax String Object, 2 completely different things, hence why it doesn't work when you try to use the example above without the 'z'.

As you've noticed these are completely undocumented and any problems with them are unsupported by BRL. The community will support it though :-)

Also, just wanna use this chance to say 'Excellent work Ploppy!'


Ploppy(Posted 2014) [#105]


Some nice news. Hardwired now can display videos within dx9 (see above), with huge FPS rates... This I have integrated with the help of 'libvlc', a very powerful library capable of interpreting multiple video filetypes (avi, mp4, mkv, wmv, etc....) at high speeds. So, in order to use any video functions within hardwired you will need to install libvlc.

Libvlc is a free library, available on the internet (http://www.videolan.org/), and is the core of the popular vlc media player. To be able to use this, you will need to copy the files 'libvlc.dll' and 'libvlccore.dll' together with the whole of the plugins folder (copy folder and its contents) from the installed libvlc folder to your bb project folder. Please note that the files/folder are not to be copied to the userlibs folder, but to the folder where your compiled exe/blitz bb is.

Further note, you have to install these files only in order to get the video functions to work. If you do not wish use these functions, the files do NOT need to be installed, and hardwired will behave as normal (at least I think so, he says confidently). If you use these funtions, and these files are not installed the video functions will not work, but should not stop your program from running otherwize.

New demo out, vidtest.bb !

So, here are some new commands for you...
dxVlcPresent%()- will return true if the required vlc files are present in the app/bb folder
dxVidLoad%(file$) - will load a video, returns 0 if file not found or invalid
dxVidDownload%(path%) - not yet working
dxFreeVid(video%) - frees a video from memory
dxVidTrackCount%(video%) - returns number of tracks in video
dxVidTrackType%(video%,track%) - returns type of track....
0=unknown
1=audio
2=video
3=text
dxVidWidth%(video%) - returns width of video!! (duh)
dxVidHeight%(video%) - returns height
dxVidDuration%(video%) - returns duration of video in milliseconds
dxVidTexture(video%,texture%) - sets a texture to a video so you can display it
dxGetVidTexture%(video%) - retreive a texture from a video that had beed set before
dxVidPlay(video%) - play video
dxVidPlaying%(video%) - returns true is video is currenly playing
dxVidStop(video%) - stop a video. dxVideoPlay will restart video
dxVidPause(video%) - pause the video, dxVideoPlay will unpause and continue from where it was
dxVidGetPosition%(video%) - returns the current position of video, in milliseconds
dxVidSetPosition%(video%,millisecs%) - set the position of the video, in milliseconds
dxUpdateWorld(anim_speed#) - now neeeded to update texture for all videos


I haven't yet checked out if multiple video playback works, but I'm guessing it does. More video functions to come (subtitles, dvd, volume, blu-ray even perhaps).

Hardwired userlib / Command list here


Ploppy(Posted 2014) [#106]
Have just checked out multiple video playback, works fine. Have quickly added these...

dxVidMuted%(video%) - will return true if video is currently muted
dxVidMute(video%) - will mute a video (turn off sound)
dxVidUnMute(video%) - will unmute a video
dVidGetVolume%(video%) - will return current volume level of a video (0-100)
dVidSetVolume(video%) - will set volume level of a video...

All should work, please let me know if they do not..


Ploppy(Posted 2014) [#107]
More video commands

dxVidGetSubtitleCount%(video%) - get number of subtitle tracks that video contains
dxVidGetAudioTrackCount%(video%) - get number of audio tracks that video contains
dxVidGetAudioTrackDescription$(video%,track%) - text desription of an audio track
dxSetAudioTrack(video%,track%) - sets a video's track
dxGetSubtitleDescription$(video%,track%) - text description of a subtitle track
dxSetSubtitle(video%,track%) - sets a video's subtitle

For some of you, hardwired may seem to 'freeze' after installing libvlc for the first time. This is not my fault, this is due to libvlc's internal workings. The first time it is used on a system it automatically builds a list of fonts on the host machine and can take up to a minute to perform. Once this list has been constructed, it will not do that again. So normally, hardwired will only 'freeze' the first time, and after a minute, should resume activity.

I'm trying to find a way to disable libvlc from constructing it's font cache...


Rick Nasher(Posted 2014) [#108]
Hi Ploppy,

This sounds like a really marvelous addition. A few questions though:

1. As I couldn't find a separate download for it, I assume that one has to copy the DLL's and plugins directory from an installed VLCplayer right?
I have installed it already(excellent piece of software), so I just copied the files from: C:\Program Files\VideoLAN\VLC\

2. Does it matter if it's the 64bit version? Couldn't get it to play up till now.

3. As a lot of people have VLCplayer installed already, would it be possible for Hardwired to check if it's in the default location and make use of the DLL's and plugins there without the need to copy them over to the Blitz project directory?


Ploppy(Posted 2014) [#109]
Hi Rick,

If for example you have your bb files in let's say c:\projects you would copy libvlc.dll, libvlccore.dll and the plugins folder to that folder.

I don't think it will work with the 64-bit version, but who knows. You'll have to install the 32-bit version I think and just copy files over...

As for your third idea, I like it. I'll look into it...

G'night


Panno(Posted 2014) [#110]
great


Iamhere(Posted 2014) [#111]
The FPS are much lower than 3 to 4 releases before.
On my system the dwarf test10.bb has before around 4500 FPS and with debug mode something slower.
Now only 1250 to 1300 FPS and debug mode the same.


Ploppy(Posted 2014) [#112]
Hi IamHere, I think the problem must come from the fact that this program is now windowed, I changed the dxGraphics3D mode from 1 to 3, in order to test things. Since windows has to display other things than just the bb program, it will need more processor time. Or at least I think that must be the problem. In this new release, I have changed the gfx mode back to full screen. See what fps you get now. Anyway, don't complain too much, I think my gfx adapter would kill to have 4500fps ;D 1500fps is pretty much my max for test10.bb... You have a very powerful gpu...

Okay, I have added one (just one) new command to the list today...

dxRequestFile$(title$,default_folder$) - brings up a standard windows file requester and returns file chosen or an empty string for nothing/cancel

title$= window title
default_folder$=default folder for when the requester appears

vidtest.bb updated to use this file requester to help make bb friendlier...

To make things easier to install the video capabilities of hardwired, I have below included the libvlc 32-bit dll files in a separate zip file (28MB), if you so wish you can download and extract the files directly to your bb app folder. This archive file includes ONLY the required dll files, and not the vlc media player.

Hardwired userlib / Command list here / Libvlc dll's here


Ploppy(Posted 2014) [#113]
Late addition of two new fun video commands...

dxGetPlayRate#(video%) - get current playback speed (set to 1 initially)
dxSetPlayRate(video%,rate#) - set new playback speed (relative to default playback speed; 2=double speed, 0.5=half speed, 4=x4 speed, etc...)


wmaass(Posted 2014) [#114]
The video playback addition is very cool Ploppy, good job.


Iamhere(Posted 2014) [#115]
Something mysterious has happend and I can not found the reason.
I tested the test10.bb against another 3D Engine-System.
With the other system I have 4800 FPS Fullscreen, with Hardwired yesterday I have 4300-4500 FPS Fullscreen.

Today I installed the new version and have now 1500 FPS Fullscreen, for testing I reinstalled the older version again, also in Blitz3D/bin and Blitz3d/userlibs folder. I always use the nodebug version (the release version) with Blitz3D and Fullscreen 1920*1080 Pixel.
But now I have also with the old version of Hardwired engine only 1500 FPS.
I tested also with an old EXE I made and I have not change, also only 1500 FPS.

But the example with the other Engine System did have the 4800 FPS always.
It's not a system bug, I also close other things like browser, same start for both and now 66% FPS lost. I have no idea what's going on.

My System is NVIDIA 560 GTX 1280 MB RAM
Intel I7-2600 CPU 16 GB RAM
About 2 years old, a Discounter Computer.


Rick Nasher(Posted 2014) [#116]
Wow even Panno "The Blitz Webcam DLL Guy" is back? ;-)


Wolf1870(Posted 2014) [#117]
1 ) Could be at the command dxRequestFile$ () a more detailed search for the final designation (". bmp", ". mp4" ...)> dxRequestFile $ ($ title, $ default_folder, ending $) <
2) The dxSetVSync command is still the same as dxflip? (both work not at the moment in fullscreen)


Rick Nasher(Posted 2014) [#118]
@Iamhere:
Dunno if Optimus is applicable in your system, but if so: perhaps your NVIDIA didn't kick in and running on intel gfx?


Ploppy(Posted 2014) [#119]
Sorry, I can't help thinking too that this is a machine issue, not hardwired. I personally haven't had a serious fps drop in the last week, and at the same time I haven't added anything to the renderer that would justify such a processor usage.

I however do know what does slow down pc's. Don't want to scare you IamHere, but have you scanned your pc for viruses recently??


Iamhere(Posted 2014) [#120]
I have always a visus scanner runing and sometimes I additionally let run malware phishing trojan scanner, but it is not 100% that I have not a virus.
I thought yesterday, is there somewhat like a Blitz Virus on the way?
I checked the new release with BlitzPlus and have the same low FPS against the other 3D Engine, so it is not a 3D Problem on my System it must have to do with Blitz. Possibly something what have hacked inside my Blitz Installation. I made an EXE with BlitzPlus and become 3000 FPS but not stable, running up and down. But more than 1500 FPS by running with the IDE.

I have tested the old release and did not get the high FPS I have before, and so it is not a hardwired problem, I know that. I have not say direct, more indirect in the last post. I know this is a mysterious problem.

There are much viruses on the way, and possibly some unknown.


Iamhere(Posted 2014) [#121]
I tested now a third Engine
http://www.blitzbasic.com/Community/posts.php?topic=101569
this one, the example 57 and amke them fullscreen with 1920*1080 Pixels
it's an animation, not the same Mesh but I get with BlitzPlus 4750-5150 FPS.
So it's not direct a Blitz Problem.

I got 2 days agon 4500 with blitzhardwired and test10.bb many times and I have the generated exe always. But I can't get the FPS back.
Also not with settings in the NVidia 3D Setting and I include the Exe directly.
All the other engines are not affected. And I can not think that when I reinstall a new release or reinstall an old release, a virus catch them immediately. This must be another problem, possibly a DX internal thing

Rick Nasher you speak about Optimus, what is this, I never heard about this.


Ploppy(Posted 2014) [#122]
Wow, I wasn't even aware of this Irrlicht project. Looks really really good, great to see there's a lot of dx9 support going on at the moment. Love it...


BlitzSupport(Posted 2014) [#123]
@Ploppy: might Iamhere's FPS reduction be related to the window event fix you recently put in?

I can't really see it as being a problem, though, when a game typically runs at 60 FPS, or maybe a couple of hundred MHz behind-the-scenes depending on the timing system used. Running at thousands of frames per second is pretty meaningless since any application running at those rates clearly doesn't involve any real-world timing and only relates to raw CPU/GPU power.


Ploppy(Posted 2014) [#124]
Little update tonight, but VERY important one (for me mainly)...

I need a little test done by somebody with an xp machine, please. I have included some direct x 11 code in my dll tonight. It will not be visible to any, but it is there. The thing is that directx 11 is not compatible with xp or under, but I wish my dll to work on xp machines nonetheless. There is, after all, the dx9 version that works well. Can you xp users tell me if the userlib runs without saying that there is a missing directx 11 dll. My userlib, if I have programmed it correctly should not bring up an error message, it will just use the dx9 part of my code and not touch the dx11 stuff. But I need someone who has an xp machine to confirm this. I need to keep my compatibilty on all machines.

Anyone that has dx11 installed on their machine should not see any difference for the moment.

By the way, Wolf you have misunderstood the dxSetVSync command. It is not like le dxFlip command at all. You use the dxSetVSync command only ONCE and BEFORE a dxGraphics3D command. This will instruct directx 9 to create a directx 9 device with or without vSync, depending on the parameter supplied. The default for this setting is true.

I have also added a filter$ parameter to the dxRequestFile command as requested by Wolf...

dxRequestFile$(title$,default_folder$,filter$)

You can create a list of file filters with this parameter. This string is a list of strings connected by a vertical bar '|'. An example of this can be found in my updated vidtest.bb.

The list is made up of pairs of strings. The first of each pair is a desription string of the file filter (example:'avi movie file'), the next of the pair is the filter itself (example:*.avi). You can use multiple file filters by separating them with a semicolon ';'.

Please note that the first in the list will be the selected file filter in the file requester. If you do not supply a file filter in this parameter, the default file filter will be used which is to show all filetypes (*.*).

Hardwired userlib / Command list here / Libvlc dll's here


Wolf1870(Posted 2014) [#125]
thanks for the explanation and the extension of dxRequestFile$,'ve understood it and now it works as it should ... great!


Ploppy(Posted 2014) [#126]
Wow, just been playing around with the Irrlicht userlib, thanks Iamhere for making me discover this. It's very powerful indeed, and speed-wize it seems faster and much more complete than my userlib. I'm blown away by some of it - great stuff. Things definately seem to be looking good for blitz these past few months....

XP users, please read my last post if you haven't yet done so - I need your help...


Iamhere(Posted 2014) [#127]
I have tested with an old installation on my old XP Computer long time ago I used it.
I have no success, also not with an earlier release of hardwired.
I installed then BlitzPlus and also no success always "userlib not found"
but I copied both, the dll and the .decl in the bin and the userlibs folder .
With Win7 no problem to find the userlib, but with XP I have problems.


Iamhere(Posted 2014) [#128]
And another thing has happened, 80% I start test10.bb now with new release I have over 4000FPS, but sometimes it have only 1500 FPS.
But with other engines the FPS is constant, no FPS lost.
I have no idea if this FPS reduction is also there if I have a bigger programm with much meshes. If the FPS reduction is in percent also a problem with bigger projects and a Vsync on, but this is hard to compare with different Engines. And not good to see with Vsync on, or a routine which reduces move-speed in relationship to CPU speed.


Wolf1870(Posted 2014) [#129]
Ploppy, just wanted to ask: the commands dxDrawImage or dxDrawImagePart still missing to draw images on the screen .. if you have time ...


N_Gnom(Posted 2014) [#130]
@ploppy: we hope you could solve the fps problem.
@Wolf1870: what you want is an animimage(animsprite) command.right?2D is cool for retro games.


Wolf1870(Posted 2014) [#131]
I think that picture commands are required for 2D or 3D, whether as retro games (my good old C-64 ;-))- or as menu images. There are certainly countless possibilities...


Ploppy(Posted 2014) [#132]
Just managed to find an xp machine to test it on - it seems that it does not work in debug mode, but does in release mode. Weird. I'll have to check out why, should work in both...

Otherwise, no dx11 detection - this is what I want, transparency... This means I can get working on the dx11 part... yay...


Iamhere(Posted 2014) [#133]
@Ploppy
Did you use DXUT or much callbacks in your code ?
In the last weeks I experiment a bit with DirectX 11 and with the DXUT Framework "that uses much callbacks in my book-examples" the code is extremely slower than e.g. the examples on the RasterTek side. And extremely is 500-800 FPS against over 6000 FPS. And the 500-800 FPS only with the simple sample from the DirectX SDK Sample Browser. OK there is a GUI on it with DXUT, but that much lower FPS is not akzeptable for me.

And I also have experimented with an 3D Engine and C++, if I use callbacks instead normal Functions the FPS rate slows down.


Ploppy(Posted 2014) [#134]
I try to avoid callbacks as much as I try to avoid threads; at least when I can.


N_Gnom(Posted 2014) [#135]
@ploppy: i tried 2 examples with different engines wich only display and rotate the dwarf.
The result of both engines is ~800FPS(have only a slow graphiccard).Hardwired only 400FPS!


Ploppy(Posted 2014) [#136]
I have checked out the my code, can't figure out why for the moment - have even tried a stripped down version of the code - same fps as usual. For me, the fps has never droppped from around 1500 for test10.bb.

I'll sort this out but I'll have to do some snooping around in the code.

I has a good look at Irrlicht last night, I like the begin/end scene commands. I think I will add these commands, plus some render entity command to give the programmer more choice - this way if you like you can skip the world management provided by hardwired and cut to the essential (but with the disadvantage of having to manage objects within the blitzcode of course.)

No releases for the next few days in my opinion, am now working on dx11 part. Looking good so far...


Buff Jigsaw(Posted 2014) [#137]
Nevermind, I missed the part where dxGraphics3D was updated.

"When I run the dxEntityBlend.bb demo it throws a "too many variables" error right at the first line. If I remove the v-sync from the dxGraphics3d command then the demo runs correctly(from what I can tell).

Windows 7-64,AMD Radeon HD 5800 Series"


Yue(Posted 2014) [#138]
I've missed something, do not understand what DirectX 11 ...

Edit: The trial version of DirectX 11 here shows no errors. In this case I think it all goes well.


Buff Jigsaw(Posted 2014) [#139]
Are there any plans to update the CaptureWorld command and the tween# functionality in RenderWorld?


Ploppy(Posted 2014) [#140]
Hi Buff Jigsaw, I do plan to get all the blitz commands covered and all their parameters, but it'll take some time. It's turning out to be a bigger monster than I first anticipated...


Yue(Posted 2014) [#141]
Everything looks fine in windows 8: D


Rick Nasher(Posted 2014) [#142]
Hi Ploppy ran the update including the vlc dll's on Win7 Ultim x64: All working great now.

P.S.: Irrlicht is a pretty good engine and probably already OK for great game creation right now with some really great features and characteristics that can make a person drool, but it's a whole different beast in itself and even though the commands have now been Blitz-a-tized, it's no Blitz 2.0 in my opinion.

I believe your approach in the long run is better for the survival of Blitz cos it's the long awaited Blitz sequel with DX9.0 and probably DX11.0 (Blitz 3.0?), while Irrlicht is more like a very advanced spinoff.

I think both engines deserve their own place in the hall of fame.


Hotshot2005(Posted 2014) [#143]

I think both engines deserve their own place in the hall of fame.



I couldnt said better and I agree :)


probably DX11.0 (Blitz 3.0?),



I cant wait to test em(when come along) because there will more effect than what it can do on DX 9!


xlsior(Posted 2014) [#144]
Apparently MS is getting ready to announce DX12 now:
http://www.kdramastars.com/articles/16917/20140306/gdc-2014-dx12.htm

(Although I'm sure that history will repeat itself, and they'll likely lock it into windows 8.x/9 in an ill-advices attempt to persuade people to upgrade their OS, but instead will lead to people to ignore the latest DX altogether because it won't work on the vast majority of existing PCs out there)


Ploppy(Posted 2014) [#145]
I have to say I'm very curious to see what dx11 has to offer that dx9 doesn't have. Dx9 was an important step up from dx7 mainly because of shader programming capabilities - but what's new in dx11?? Guess we're going to find out.

And now dx12 - another one?? OMG, it almost makes me want to break open a bottle of whisky to drown my sorrows ;D I haven't even finished writing the dx9 stuff and have only just begun seriously on the dx11 routines (already finished entity position/rotation/scaling). And now dx12???

Well, at least I have one consolation - if it is true that dx12 will only work on windows 9 and you possiblty need a compatible gfx adapter to get it to run, then I won't be able to get it to run on my machine anyway. Let's just wait 'n see what microsoft has to announce.


Iamhere(Posted 2014) [#146]
The most 3D Engines mostly uses DX9 and OpenGL 2.0 -3.x today, only commercial game productions uses the actual versions of DX11.x and OpenGL4.x .
So programming in DX11 will be good for the next 10 years. DX7 runs on my win7 64bit with Blitz3d and DX11 will run on machines in 10-15 years surely.

I believe that DX12 is only an upgrade to DX11 and have not that differences inside like DX7 to DX9 and DX9 to DX11


Rick Nasher(Posted 2014) [#147]
@Ploppy: Wow. You are already starting on the DX11 bits?? You are busy bee.
So do you consider the DX9 part a wrap now(it has a whole load of commands, time for some serious programming from our side?) or are you just side tracking for the moment or planning to finish both at the same time?

I wouldn't worry too much about DX12(yet). It will probably take ages before catching on, especially if it requires new hardware. If not, well then it's your soon to be established company's next project; Blitz 'Hardwired' version 4.0 DX12 (in 2015-16) ;-)


Ploppy(Posted 2014) [#148]
No, the dx9 side isn't complete in any way - I have a LOT of loose ends to tie up, and missing blitz commands to add. I haven't yet finished animation stuff, models are still stiff. Mesh loading is incomplete, collision detection is only half done, and some fine tuning has to be done yet again on the renderer. I also wish to improve the text routines as I can speed them up tenfold.

I just like to go off of tangents when the mood takes me. Last sunday I thought to myself 'and why don't I tackle video and see how far I get' even when I haven't completely finished the shadow routines (to which I will come back). Have pretty much completed the video part with the help of vlc, and looking really great (so smooth). So, I'd thought i'd give dx11 another go.

I am not developing hardwired in any particular order, I go where my mood takes me from day to day. It's not a very structured way of programming I'll admit but I'm not a very structured person. Still, I think that at one moment I'll only have loose ends to tie up (perhaps a thousand of them, but all loose ends ;D ). We'll see...


Rick Nasher(Posted 2014) [#149]
:-) Well whatever works for you. I'm working on 4-5 different things too but no way near as productive and at not even close to the same level as you.
I'm still amazed how you do all that though without being a programmer by profession cos I would have gone lost in the woods long time ago, tearing off my clothes and running around with my hands up high in the sky and screaming from the top of my lungs.. ;-)

But how do you keep track? Do you keep a list of which Blitz commands haven't yet been converted(besides the one you have now of commands done already: 332 according to Excel)?

Besides that: do you, or anybody else know how many commands Blitz currently consists off?


Ploppy(Posted 2014) [#150]
I'm constantly testing, retesting and scanning most of my source. When I modify/improve or add to a command I often have to modify other routines at the same time so it all links together well (not to mention all the memory considerations that come with c++). It's a whole big jigsaw puzzle, and I am pretty new to this c++ thing so I'm discovering new techiques all the time.

I know what you mean about running around arms-in-air and all. Part of me feels like giving up, I'll admit. But I'm sick of giving up for things and from what I have witnessed I KNOW I am capable of doing it due to my perseverence and (un)healthly obsession. I constantly remind myself of all the hours and headaches I have spent on this project up 'til now. I have well passed the point that if I give up, I will have wasted such an investment of time and energy with nothing to show et the end. I have to go all the way with this, the only things that could hinder my progess are outside factors such as family and work. I just have to make it as professional and bug-free as possible or else people will just not use hardwired. My dll will really only have some real lasting value for me the day someone uses it for a project and gets it published. It'd be great to know that someone used HW and got something out of it - would make it all worthwhile...


Rick Nasher(Posted 2014) [#151]
I know what you mean regarding those last ones, hehehe. My girlfriend sitting on the couch right next to me looking a bit, like: lets go outside. LOL

Buttah: I edited my original post above and added:

Do you keep a list of which Blitz commands haven't yet been converted(besides the one you have now of commands done already: 332 according to Excel)?
Besides that: do you, or anybody else know how many commands Blitz currently consists off?

Well was holding back a bit with the chances of syntax changing etc and due above mentioned factors not to mention my already running projects, but I'm positive that I would be able to convert them(and will) to Hardwired cos it would surely benefit from it. Especially since you've added shadows and planning on adding physics. My current game project consists out of a free roaming terrain, with indoor scenery and runs on Blitz3d making use of FastExtend for shadows and water/reflections + PhysX for well.. physics, the Devils particle engine and a blur library.


Ploppy(Posted 2014) [#152]
Sounds good, and I hope HW won't let you down. It it far from my intention to waste my own and others' precious time. As long as I can get thoses grey cells working, I'll do it. As always, no promises - what you see is what you get; after all I'm under no obligation whatsoever and under no contract for any of it. All I can say is that my intentions are still strong and hope to bundle as much as I can together and all that for no charge and no strings attached.


Rick Nasher(Posted 2014) [#153]
No pressure. ;-) We(I think I speak for the majority with this) are already pretty thankful for your accomplishments sofar. I see lot of old Blitzers coming back seeing what the buzz is about. Hope you manage to hold out(and keep the fam happy at same time). Take care. I'm off(for now).

(BTW still working on Simplanetary also but had a couple of issues to attend to also regarding health and reinstalling my laptop, slowing things down.)


Yue(Posted 2014) [#154]
Forward Ploopy!, I am among those who admire people with echos when really show what they know and in the state in which they are towards learning. Many turned their backs to Blitz3D at the time, but that is ratifies and something that most users like me are not programmers and we love tools that make life much easier.

In this case when the project is mature enough, I'm partario you acquire some monetary incentive to your account to be motivated to provide support and that many users would be willing to pay, of course by that I throw the rope to the neck and I do not think you can pay, however I encourage you to continue in this project.

A greeting.


Buff Jigsaw(Posted 2014) [#155]
Anyone else notice that the latest geforce driver 334.89 wont let (vanilla)Blitz3D1.108 go fullscreen?

Geforce GTX 670
windows 7 64 bit


Ploppy(Posted 2014) [#156]
Hi Yue, I think I understand what you are saying - sorry your english a bit hard to decode there. Yes, I know what you mean that a 'monetary incentive' would help spurn me on, of course - and who knows I could get a lot if I released this for a price at the end, but I do not wish to charge for this. I am primarily a blitz user, and as a blitz user I am sick of waiting around for something that was just not going to happen, so I want to give this away to blitz users who were/are just as frustrated as I am for some new base to work on. And I hated what the Xors3d people did to the blitz community - was so very promising that software and then at the end they turned out to be scheisters. I do not wish to lose people's hard earned trust. If, at the end when my project is complete, someone wishes to 'donate' for hardwired I will create a donate button on my website - but I will leave that an option. That's all. If this makes me a fool, then so be it, but I will at least have some pride in having released something usable to the public, and perhaps have some credibility thrown in too.


Iamhere(Posted 2014) [#157]
@Buff Jigsaw
I have this Driver installed, but I have no problem with fullscreen.
Normal DX7 Blitz3D can fullscreen and Hardwired with Blitz3D can also without problems go in fullscreen.

Geforce GTX 560 Win 7 64 bit


Iamhere(Posted 2014) [#158]
Possibly you have Debug enabled?


Buff Jigsaw(Posted 2014) [#159]
@Iamhere
thx for the tip. Its not specific to debug enabled. However when debug is enabled the error is a memory access violation at the Flip command in various blitz programs. I upgraded to the driver because of other screwy system behavior. So maybe something else is going on. I will keep digging. Thx!


Buff Jigsaw(Posted 2014) [#160]
@Iamhere
looks like it had something to do with either the Preferred Refresh Rate or Vertical Sync driver setting. I set these back to their defaults and it works like normal now. Thx for the help.

edit: yep it was the Preferred Refresh Rate setting.


Ploppy(Posted 2014) [#161]
Buff, really happy about your news, I must say I'm relieved its not HW that was messing up (which was possible of course- still very much in development).

May have my first release with some dx11 functionality included by the weekend. I have already adapted about 100 commands to it, and am presenly working on the renderer. This dx is much more shader intensive than the previous ones, in fact without shaders you can't do much at all. It seems I may have bitten off more than I can chew with dx11 - but what the hell; I have strong teeth... :D

Quite honestly, if I ever get hardwired complete, attaining the goals/aspirations that I have set myself, I can see myself with an 800-1000 function count at the end - especially with the new dx11 stuff that can be exploited. Yikes!


Yue(Posted 2014) [#162]
Install windows7 on my laptop for test in Dirext 11


Rick Nasher(Posted 2014) [#163]
Hehehe, 800-1000: that's not a huge update to Blitz anymore, but a whole new language! (Hint to Mark: hire this guy)

Well, appears you've been successful with all you did so far on this Ploppy, so you're obviously capable enough. A daunting task nevertheless. That donation button will come in handy(very good idea).

The name "Blitz HardWired II (DX11)" would be well deserved.


Ploppy(Posted 2014) [#164]
No need to change the name. I decided to call it hardwired on purpose so not to relate it necesarily only with dx9. When I started this project my first routines were actually in dx11, but quickly realised I would need to start with a dx9 base which is very important to have for wide support on all machines. Keeping the name nice and ambiguous doesn't chain me down in any way.


Rick Nasher(Posted 2014) [#165]
Ahah, that explains a bit. Well DX11 it is then. :-D


N_Gnom(Posted 2014) [#166]
@ploppy: have you a testable dll for dx11?


Ploppy(Posted 2014) [#167]
No - still working on it. First version should be ready by the weekend with a bit of luck. Both dx9 and dx11 modes are coded in the same dll, so I have to work on compatbility between modes for each command.


Buff Jigsaw(Posted 2014) [#168]
Rad!


N_Gnom(Posted 2014) [#169]
sounds very very great


Ploppy(Posted 2014) [#170]
Don't get too excited too quickly : first version will be basic for dx11 just to make sure it renders correctly.


Ploppy(Posted 2014) [#171]
Post deleted due to forum error..


Rick Nasher(Posted 2014) [#172]
Ran a quick check on the amount of standard Blitz3D commands and came at (give or take): 578. (Of course thia contains also a lot of standard BASIC commands which do not require any changes/conversions, such as For, Next, If, ABS, etc)

The last Hardwired command list contains 332 already, with lots of additional and enhanced commands. So I think your estimations may be pretty accurate.. :-)

Link to Lists


GaryV(Posted 2014) [#173]
Both dx9 and dx11 modes are coded in the same dll, so I have to work on compatbility between modes for each command.
Hopefully using DX9 only still won't require DX11 to be installed.


Ploppy(Posted 2014) [#174]
It shouldn't - My goal is max compatibility..


Ploppy(Posted 2014) [#175]
New thread....

http://blitzbasic.com/Community/posts.php?topic=102259


Rick Nasher(Posted 2014) [#176]
@Yue:

Hi,

Did you create an update to your blitz3d>hardwired conversion include, that was called dx9.bb? I think it was a great idea.

Greetz,

Rick