• Some users have recently had their accounts hijacked. It seems that the now defunct EVGA forums might have compromised your password there and seems many are using the same PW here. We would suggest you UPDATE YOUR PASSWORD and TURN ON 2FA for your account here to further secure it. None of the compromised accounts had 2FA turned on.
    Once you have enabled 2FA, your account will be updated soon to show a badge, letting other members know that you use 2FA to protect your account. This should be beneficial for everyone that uses FSFT.

PhysX Rocket

Joined
Oct 26, 2005
Messages
2,340
I really think it would be a good idea for Ageia to release something along the lines of NovodeX Rocket, using a newer (PhysX card compatible) version of the physics engine. This is one thing which could easily show people what their new card can do, and should be pretty easy to pull off, since I assume they got Rocket when they acquired NovodeX, so most of the framework is already there.

...ok, this was all just a flimsy pretext for showing off my new demos :D .

Let me know if you want the script files.

tower4vf.jpg

Video

hwall0ee.jpg

Video

awall2fe.jpg

Video
 
Or someone could make a mod on the cellfactor engine. Wich look like that but with brick textures.
 
Correct me if I'm wrong, but I thought CellFactor ran pretty much the same with and without a PPU (with the exception of the cloth and fluid effects), and is already a pretty taxing game. In other words, the GPU chokes long before you start stressing the PPU. I doubt you're going to get 15,000 objects on screen with reasonable framerates.

And those bricks do have textures on them...
 
I thought CellFactor required the PhysX card, but then again I haven't been paying much attention to this stuff.
 
LuminaryJanitor said:
Correct me if I'm wrong, but I thought CellFactor ran pretty much the same with and without a PPU (with the exception of the cloth and fluid effects), and is already a pretty taxing game. In other words, the GPU chokes long before you start stressing the PPU. I doubt you're going to get 15,000 objects on screen with reasonable framerates.

And those bricks do have textures on them...
A mod like that, would be dump complete limbo station map. So build some basic mappy. Put a flatplane map terrain with one a sand texture and put a lot of brickes on it with a color full brick texture like bricks we have here in europe More R(gb) in it . Grey bricks?
 
it's a demo for physics not about how pretty the graphics are. Isn't that what ppu is all about anyhow not prettyiess but actual function?
 
SuperGee said:
Grey bricks?
Just pretend it's a cinder block :p .

it's a demo for physics not about how pretty the graphics are
I know the graphics aren't the focus of the demo, but the graphics are the bottleneck at the moment.
And the fact that the physics can be handled by a CPU suggests that it's a piss-poor demonstration of hardware physics.

BTW, does anyone with a good CPU play around with Rocket? I'd like to know how well they handle it. The CityExplode script seems like a good stress-test - I get ~9fps on my A64 3000+ (4600 bricks).

EDIT: Here ya go, Gee and Jimmy... Red bricks. Nine thousand of them ;) (with 9,000 grey ones as well to give a bit of contrast). Video
bigbang0bg.jpg
 
LuminaryJanitor said:
I know the graphics aren't the focus of the demo, but the graphics are the bottleneck at the moment.
And the fact that the physics can be handled by a CPU suggests that it's a piss-poor demonstration of hardware physics.

Correct, the Cubewall I linked you to:
Use my Pentium D950 and no Physx = 100% CPU load and laggy preformance.
Use my Pentium D950 and Physx = 0-5%CPU and smooth prefomance.

BTW, does anyone with a good CPU play around with Rocket? I'd like to know how well they handle it. The CityExplode script seems like a good stress-test - I get ~9fps on my A64 3000+ (4600 bricks).

Have you first now realized that a CPU is actually piss-poor at physics compared to the Physx? ;) *L*
No current CPU will give you smooth +30 FPS with 4600 bricks, sorry.

Terra - BTW cool vids :)
 
Terra said:
Have you first now realized that a CPU is actually piss-poor at physics compared to the Physx? ;) *L*
No current CPU will give you smooth +30 FPS with 4600 bricks, sorry.
I know, I'm just curious to see exactly how big the gap is between the two - I've never seen either stress-tested, and all I've got to go on is Ageia's marketing pitch (which put the CPU's capability at a couple of hundred objects, IIRC...).

BTW, for anyone interested, Rocket lets you record captures, so you can run the demo again without having to do any computation. That's why the ~20,000 block demo is running at 110fps ;).
 
LuminaryJanitor said:
Let me know if you want the script files.

If I get the scriptfiles, what more do I need to run them real-time?
I can give you some info on how it runs with and without the Physx card then...

Terra...
 
It won't use your PhysX card, 'cause it's running a much older version of the API (before NovodeX was renamed to PhysX). But all you need to run the scripts is NovodeX Rocket. Just open them up in the Scripts section of the Rocket GUI.

I'll post one when I get home tonight. Modifying it yourself is dead easy - once you've got the CreateBuilding function, you just need to feed it dimensions and position, call the built-in sphere function with radius, position and velocity, and that's it for stuff as simple as this. Though you can make it a lot more complicated (check out the built-in tank tread demo) if you know what you're doing (which unfortunately, I don't...).
 
CF has a Mod tool RealityBuilder. Mayby with that you can make a hardware accelerated version. Using the new PhysX/NX API
 
Here you go. Create a new .lua file in Notepad and paste this into it. Note that it's only a tiny bit at the end you need to actually understand to make your own simple demos, so don't worry if you're unfamiliar with code.
Code:
require "odf.lua"

WALL_MASS		= 1.8

function CreateBuilding(posX, posY, posZ, width, depth, height)

	numBricks = 0
	
	halfw	= (width*2+1)/2
	halfd	= (depth*2+1)/2
	
	Pos = {x=0, y=posY, z=posZ-halfd}
	
	awake	= "false"
	
	for h=0, height do
	
		mod = math.mod(h,2)
		y = Pos.y+h+0.5
		
		if mod==0 then
			
			for w = 0, width-1 do
			
				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f) force(%f,%f,%f)", Pos.x + (w*2) - halfw,		y,	Pos.z, awake, WALL_MASS, 0,0,0)

				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x + (w*2) + 1  - halfw,	y,	Pos.z+(depth*2), awake, WALL_MASS)

				numBricks = numBricks + 2

			end

			for d = 0, depth-1 do

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x-0.5  - halfw,			y,		Pos.z+(d*2)+1.5, awake, WALL_MASS)

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x+width*2-0.5  - halfw,	y,	Pos.z+(d*2)+0.5, awake, WALL_MASS)

				numBricks = numBricks + 2

			end

		else

			for w = 0, width-1 do

				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x + (w*2)+1  - halfw,		y,	Pos.z, awake, WALL_MASS)

				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x + (w*2)  - halfw,		y,	Pos.z+(depth*2), awake, WALL_MASS)

				numBricks = numBricks + 2

			end

			for d = 0, depth-1 do

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x-0.5  - halfw,			y,		Pos.z+(d*2)+0.5, awake, WALL_MASS)

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x+width*2-0.5  - halfw,	y,	Pos.z+(d*2)+1.5, awake, WALL_MASS)

				numBricks = numBricks + 2

			end

		end

	end
	return numBricks

end


OdfScript("PsReset");
OdfScript("PsPlaneEmpty")

-- Material for the walls
OdfScript("PsMatBegin wall")
	OdfScript("PsMatDynamicFriction 1")
	OdfScript("PsMatStaticFriction 1")
	OdfScript("PsMatSpinFriction 0")
	OdfScript("PsMatRollFriction 0")
	OdfScript("PsMatRestitution 0")
	OdfScript("PsMatDynamicFrictionV 0")
	OdfScript("PsMatStaticFrictionV 0")
	OdfScript("PsMatDirOfAnisotropy 1 0 0")
	OdfScript("PsMatDirOfMotion 1 0 0")
	OdfScript("PsMatSpeedOfMotion 0")
	OdfScript("PsMatAnisotropic false")
	OdfScript("PsMatMovingSurface false")
OdfScript("PsMatEnd")


-- Create balls
OdfScript("PsSphere radius(1) mass(3000) position(0,20,100) velocity(0,0,-65)")
OdfScript("PsSphere radius(1) mass(3000) position(100,50,0) velocity(-100,0,0)")
OdfScript("PsSphere radius(5) mass(10000) position(0,1000,0) velocity(0,-100,0)")

-- Add all CreateBuilding(position_x, position_y, position_z, width, depth, height) calls to this sum
numTotalBricks = CreateBuilding(0, 0, 0, 5, 5, 50)

-- Set camera - three position coordinates, three target coordinates
OdfScript("OdfLook 67.2997 53.5574 65.2882 66.6635 53.2500 64.6342")


OdfScript("OdfMessage 6 \"%d Bricks\"", numTotalBricks)
OdfScript("PsPause false")
OdfScript("OdfShowGrid false")
OdfScript("PsSetConstant NX_MIN_SEPARATION_FOR_PENALTY -0.003")
OdfScript("PsTickRate 0.01")
OdfScript("PsGravity 0 -9.81 0")
The "Create balls", "CreateBuilding" and "Set camera" are the only parts you need to modify to make the movies I posted above. Also displays a brick count, provided that you add all the CreateBuilding calls to the one already there. All the parameters are pretty self-explanatory.

Most of this stuff was pulled out of the existing .lua files, by the way.
 
LuminaryJanitor said:
Here you go. Create a new .lua file in Notepad and paste this into it. Note that it's only a tiny bit at the end you need to actually understand to make your own simple demos, so don't worry if you're unfamiliar with code.
The "Create balls", "CreateBuilding" and "Set camera" are the only parts you need to modify to make the movies I posted above. Also displays a brick count, provided that you add all the CreateBuilding calls to the one already there. All the parameters are pretty self-explanatory.

Most of this stuff was pulled out of the existing .lua files, by the way.


Big Bang gives a whopping 4-5 FPS on a PD 950 :eek: :D
That .lua script gives me ~59 to ~160 (Peak 300) FPS at ~50% CPU usage...

image1ig4.jpg


Terra - A shame there is no PhysX support
 
That's a very nice little program. I tried out the "Build a wall" (the one that if you hit the "M" key twice it demolish's the wall. and doing that approx 80+ times my system came to a crawl - fps went to .01 or such then my system rebooted.. :D I think I gave it waaay to muchto process. There were approx 10k little bricks bouncing (slugging) around my screen.

I did send an email to Aegia asking why they haven't impliented that program to work with their physx card, but nothing back yet from them.. :(

That would be a nice benchmarking tool to compare it against software physics though if the physx api's were implimented.
 
Terra said:
Big Bang gives a whopping 4-5 FPS on a PD 950 :eek: :D
Still doing a lot better than me ;)
Claims it's running at ~2-3fps, though in reality I'd say it's just under 1fps...

Bicarus said:
I tried out the "Build a wall" (the one that if you hit the "M" key twice it demolish's the wall. and doing that approx 80+ times my system came to a crawl - fps went to .01 or such then my system rebooted.. I think I gave it waaay to muchto process. There were approx 10k little bricks bouncing (slugging) around my screen.
I'd forgotten about that... used to play around with that ages ago, when I first got it. Never to the point of crashing my computer though :D .

I was going to mail Ageia about this too, but I couldn't find a suitable email address on their site... Let us know if you hear back from them.


BTW Terra, what language is that? Swedish? Or somewhere close?
 
LuminaryJanitor said:
Still doing a lot better than me
Claims it's running at ~2-3fps, though in reality I'd say it's just under 1fps...

But still not acceptable preformance ;)


BTW Terra, what language is that? Swedish? Or somewhere close?

Close...real close...danish ;)
But a dane, a swede and a norwegian can understand each other, both in writing and spoken tounge ...even better than a people form Spain and Portugal can ;)

Terra - Rødgrød med fløde :D
 
LuminaryJanitor said:
...Red fruit pudding with cream?

Yup :)
But if you hear it pronouced you go ???? :confused:
This one is even better:
A U Å Æ Ø I Æ Å...

Terra - ;)
 
Terra said:
This one is even better:
A U Å Æ Ø I Æ Å...

Terra - ;)
I'm getting dizzy just looking at it... I'd probably put myself in a coma trying to pronounce that :D

What does it say?
 
LuminaryJanitor said:
I'm getting dizzy just looking at it... I'd probably put myself in a coma trying to pronounce that :D

What does it say?

A (I'm) U (out) Å (on) Æ (the) Ø (isle) I (in) Æ (the) Å (creek)
(local dialect)

Terra - I could say it, but I think we are getting way OT now ;)
 
Lol, that's a fun little program. Now who was it here that said "there's no fun in pushing around a stack of boxes"... :p
 
HOCP4ME said:
Lol, that's a fun little program. Now who was it here that said "there's no fun in pushing around a stack of boxes"... :p

People that havn't tried it ;) *L*

Terra - Most peple "seems" to know a lot..with out ever trying any of it...
 
AGIEA has released a NEW version of NovoDex Rocket 1.1 called PhysX Rocket with the SDK 2.4.4 if anyone has any interest.
I belive it now supports PhysX hardware i .lua files (If they are written for it)...

Perhaps someone should rewrite Bigbang.lua for Novodex1.1 to see what the difference is between CPU-phycics and PPU-physics?

Terra...
 
Terra said:
AGIEA has released a NEW version of NovoDex Rocket 1.1 called PhysX Rocket with the SDK 2.4.4 if anyone has any interest.
Do you know where I can get it? There doesn't seem to be a link on Ageia's site (to be honest, there doesn't seem to be a whole lot of anything on Ageia's site... just a driver download and thirty pages of sales pitch...).
 
LuminaryJanitor said:
Do you know where I can get it? There doesn't seem to be a link on Ageia's site (to be honest, there doesn't seem to be a whole lot of anything on Ageia's site... just a driver download and thirty pages of sales pitch...).

PM me, and we will work something out :)
But it's not on their site, it in the developers site..the one you need to log into ;)
 
LuminaryJanitor said:
Do you know where I can get it? There doesn't seem to be a link on Ageia's site (to be honest, there doesn't seem to be a whole lot of anything on Ageia's site... just a driver download and thirty pages of sales pitch...).
Just register with them and you can get a bunch of extra downloads.
 
jimmyb said:
Just register with them and you can get a bunch of extra downloads.

I liked the PhysX_2.4.4_SDK_TrainingPrograms.exe quite a lot...
Had a blast with that tank...even got the tracks to get locked :D
And it shows the diversity of the PPU even more..

I mean from Fluid Emitters to Raycasting to Suspension and Torque...
 
So how much of an advantage does the PPU show us here?

It's supposed to handle up to 32,000 objects. Maybe someone should make a huge tower with 30,000 bricks and see if the PPU can handle it?
 
HOCP4ME said:
Maybe someone should make a huge tower with 30,000 bricks and see if the PPU can handle it?
I'll get on it as soon as I get my SDK ;)

Developer account pending verification...
 
LuminaryJanitor said:
I'll get on it as soon as I get my SDK ;)

Developer account pending verification...

Took ~24 hours for me to get "validated"
I'm no big coder, but anything you make I am willing to run and post the results....with and without hardware support.

Facts on the table :)
 
Looks like NovodeX Rocket scripts work fine with the new version. I'm a bit busy at the moment, so here's two of my previous scripts thrown together:
script0hl1.jpg

Code:
require "odf.lua"

INITIALY_AWAKE	= "true"
WALL_MASS		= 1.8
USE_RAGDOLLS	= 0


function NewVectorXYZ(vX, vY, vZ)
	Vector = {x=vX, y=vY, z=vZ}
	return Vector
end

function CreateBuilding(x, y, z)
	
	height	= 10
	width	= 30
	depth	= 30
	
	halfw	= (width*2+1)/2
	halfd	= (depth*2+1)/2
	
	Pos = NewVectorXYZ(0, y, z-halfd)
	
	awake	= "false"
	
	for h=0, height do
	
		mod = math.mod(h,2)
		y = Pos.y+h+0.5
		
		if mod==0 then
			
			for w = 0, width-1 do
			
				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f) force(%f,%f,%f)", Pos.x + (w*2) - halfw,		y,	Pos.z, awake, WALL_MASS, 0,0,0)

				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x + (w*2) + 1  - halfw,	y,	Pos.z+(depth*2), awake, WALL_MASS)

			end

			for d = 0, depth-1 do

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x-0.5  - halfw,			y,		Pos.z+(d*2)+1.5, awake, WALL_MASS)

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x+width*2-0.5  - halfw,	y,	Pos.z+(d*2)+0.5, awake, WALL_MASS)

			end

		else

			for w = 0, width-1 do

				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x + (w*2)+1  - halfw,		y,	Pos.z, awake, WALL_MASS)

				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x + (w*2)  - halfw,		y,	Pos.z+(depth*2), awake, WALL_MASS)

			end

			for d = 0, depth-1 do

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x-0.5  - halfw,			y,		Pos.z+(d*2)+0.5, awake, WALL_MASS)

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x+width*2-0.5  - halfw,	y,	Pos.z+(d*2)+1.5, awake, WALL_MASS)

			end

		end

	end

end

function CreateBuildingX(x, y, z)
	
	height	= 50
	width	= 5
	depth	= 5
	
	halfw	= (width*2+1)/2
	halfd	= (depth*2+1)/2
	
	Pos = NewVectorXYZ(0, y, z-halfd)
	
	awake	= "false"
	
	for h=0, height do
	
		mod = math.mod(h,2)
		y = Pos.y+h+0.5
		
		if mod==0 then
			
			for w = 0, width-1 do
			
				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f) force(%f,%f,%f)", Pos.x + (w*2) - halfw,		y,	Pos.z, awake, WALL_MASS, 0,0,0)

				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x + (w*2) + 1  - halfw,	y,	Pos.z+(depth*2), awake, WALL_MASS)

			end

			for d = 0, depth-1 do

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x-0.5  - halfw,			y,		Pos.z+(d*2)+1.5, awake, WALL_MASS)

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x+width*2-0.5  - halfw,	y,	Pos.z+(d*2)+0.5, awake, WALL_MASS)

			end

		else

			for w = 0, width-1 do

				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x + (w*2)+1  - halfw,		y,	Pos.z, awake, WALL_MASS)

				OdfScript("PsBox sides(2,1.004,1) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x + (w*2)  - halfw,		y,	Pos.z+(depth*2), awake, WALL_MASS)

			end

			for d = 0, depth-1 do

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x-0.5  - halfw,			y,		Pos.z+(d*2)+0.5, awake, WALL_MASS)

				OdfScript("PsBox sides(1,1.004,2) material(wall) position(%f,%f,%f) awake(%s) mass(%f)", Pos.x+width*2-0.5  - halfw,	y,	Pos.z+(d*2)+1.5, awake, WALL_MASS)

			end

		end

	end

end

OdfScript("PsReset");
OdfScript("PsPlaneEmpty")

-- Material for the walls
OdfScript("PsMatBegin wall")
	OdfScript("PsMatDynamicFriction 1")
	OdfScript("PsMatStaticFriction 1")
	OdfScript("PsMatSpinFriction 0")
	OdfScript("PsMatRollFriction 0")
	OdfScript("PsMatRestitution 0")
	OdfScript("PsMatDynamicFrictionV 0")
	OdfScript("PsMatStaticFrictionV 0")
	OdfScript("PsMatDirOfAnisotropy 1 0 0")
	OdfScript("PsMatDirOfMotion 1 0 0")
	OdfScript("PsMatSpeedOfMotion 0")
	OdfScript("PsMatAnisotropic false")
	OdfScript("PsMatMovingSurface false")
OdfScript("PsMatEnd")



OdfScript("PsSphere radius(3) mass(10000) position(100,0,-20) velocity(-150,0,0)")
OdfScript("PsSphere radius(3) mass(10000) position(-100,0,20) velocity(150,0,0)")
OdfScript("PsSphere radius(3) mass(10000) position(20,0,100) velocity(0,0,-150)")
OdfScript("PsSphere radius(3) mass(10000) position(-20,0,-100) velocity(0,0,150)")

OdfScript("PsSphere radius(1) mass(3000) position(0,20,100) velocity(0,0,-65)")

OdfScript("PsSphere radius(1) mass(3000) position(100,50,0) velocity(-100,0,0)")

OdfScript("PsSphere radius(5) mass(10000) position(0,1000,0) velocity(0,-100,0)")


CreateBuildingX(0, 0, 0)
CreateBuilding(0, 0, 0)




OdfScript("PsPause false")
OdfScript("OdfLook 67.2997 53.5574 65.2882 66.6635 53.1481 64.6342")

OdfScript("PsSetConstant NX_MIN_SEPARATION_FOR_PENALTY -0.003")
OdfScript("PsTickRate 0.01")
OdfScript("PsGravity 0 -9.81 0")
Just paste this into a .lua file and put it in your \Rocket\data\lua directory, and run it from the Scripts section of the Rocket UI.

Runs at 16-20 fps on an A64 3000+.
 
Runs at 16-20 fps on an A64 3000+.

That's weird. I ran it on the Novodex Rocket program and got 40-50 FPS with the same processor.

Why should the PhysX Rocket be any less efficient when running on a CPU?
 
I think the precision of the physics calculations is a lot higher in PhysX Rocket. The pile takes a lot longer to settle completely, and small shifts have a much more dramatic effect on framerate (suggesting the forces are propagating further). Whether it's just the result of a different default setting somewhere, or a major difference between the SDKs, I'm not sure.

BTW, I get ~25-40fps in NovodeX, but my CPU (Winchester) is still at stock speed, and my RAM's generic crap, so it's hardly surprising...
 
Okay, since Terra was banned, is there anyone else with a PPU who can test PhysX Rocket for us?
 
I have tested the physx rocket based on the 2.4.4 SDK?
With Asus physx card
But I am not sure I am allowed to post the results?

Would i violate anything the the agreement i agreed to?

Let me know
 
emmett said:
But I am not sure I am allowed to post the results?

Would i violate anything the the agreement i agreed to?
I haven't read it myself, but ...I'm fairly sure there's nothing in there forbidding you from posting framerates on the internet.
 
Back
Top