Motion Blur

A debug tool like that might be very usefull for app developers too, during testing phases.



For crashes and performance reports, I'd love to get some information about the card, drivers, it's capabilities etc etc :slight_smile:



Maybe something as simple as a getDebugInformation() on the Display or Renderer that returns a properties object or the likes.



Endolf

great idea! im in!

Just for the protocol: MrCoder, your motion blur is GREAT!!! Thanks a lot!

MrCoder said:

*sigh* you gotta hate all the graphics card makers for not making glsl compliant or just dead slow cards...

which crappy cards do you have?


I've got an ATI Radeon X850.  I'll try updating the drivers when I go home tonight.

700+ with

1200+ without



AMD64 3000 

gf 66600GT 128mb

win 2000

renanse said:

I've got an ATI Radeon X850.  I'll try updating the drivers when I go home tonight.


Man....what a slow crappy card.  I'd be happy to trade you for my extremely awesome nVidia 6600GT?  I know, I'm extremely giving. ;)

Mr.Coder, if you'll start working on a utility that will gather the information I'll take care of submission and storing the report.  Sound reasonable?

Endolf, I'm actually working on a little utility that will log crash reports/exceptions/or unexpected behaviour in the game I'm currently working on....if enough people really want this I might consider pushing it out to jME.....but people have to REALLY want it.  :P

Good that there's some Ati cards at NCSoft now, before I was the "guy with the Ati card"… I have an X700. (Latest drivers, unless they released a new set to day…)



Certainly not an exotic card, crappy… I dunno. Looks like it's mostly an Ati vs. nVidia issue… and since the article came from nVidia it's not extremly surprising. Generally GLSL support isn't that bad with Ati is it? (I certainly used to be better than nVidia at the start).



GLInfo:

http://www.tijl.demon.nl/jme/x700.htm

a little googling for ati & glsl brought up a post on the gamedev.net board that pointed me to this page http://developer.3dlabs.com/downloads/index.htm. they have a testsuite that shows whatever glsl-features your card supports and a glsl validator that checks if your program is glsl compliant. for windows only, but they come with sources (bsd license). versions for opengl 1.5 & 2.0 are available.

the gamedev guys also stated that ati’s implementation of glsl is much stricter than nvidias, maybe that’s the problem.

Apperently Ati engineers haven't figured out how to let their compiler unroll a simple loop. Replace motionblur.frag with this to get the effect on Ati for now (obviously the code can be shortened a lot, this is just to make a point):



/*
 * Copyright (c) 2003-2006 jMonkeyEngine
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 * * Redistributions of source code must retain the above copyright
 *

the shaders went through the 3dlabs glsl validator before the cvs checkin and passed…i try to allways do that…so according to that it's fully glsl compliant. one of the two is stricter than the other yes…it wants you to define all casts like float to vec4 etc, but mine doesnt care…

Since they work I assume they are correct. They’re just very slow for some reason.



Changing “const float samples = 16.0;” to 2.0 or 1.0 hardly speeds it up, so my guess it’s in the vertex shader part somewhere. (now I actually timed the frames it gets slower by a fair amount… but not liniar to the amount of samples).

Short version:



/*
 * Copyright (c) 2003-2006 jMonkeyEngine
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 * * Redistributions of source code must retain the above copyright
 *

truly sucks…makes the shader code really really ugly and unmodifiable…but, not much to do about it…thanks alot to llama for finding that out!

found alot of posts on the topic, many like this:


ATI's support for GLSL looping and branching is poor. Currently, there is no real way to use looping and branching outside DX9/CTM. Using these constucts seems to kick the driver into software mode if it can't unroll the loops and predicate the branches within the instruction limits.


checked in new shader versions with unrolled loops (damn you ATI)  :x

fired up ATI's Rendermonkey and checked up some loops in there…appearantly on some effects they have a "hardware" and "software" effect version…alll software effects used floats as the counter in the loops, and the hardware ones used int's…



using integer it works with loops according to llama! gotta be that it's to scary to unroll inexact float loops :slight_smile:



llama's checking in a new version, again…

Which is now in…

truly sad…  This seems like laziness on ATI's part.

very sad, i've allways liked ati a bit more than nvidia…but that's decreasing by the day…

i hate to raise the dead but i'm experiencing issues with motion blur. The quad that you display the blur on seems to have a black background or something… i'm just wondering if this test works for everyone else before i go into trying to debug it. Thanks!

it broke down some time around a big feature change of jME(don't actually remember which it was). but it didnt seems to work flawlessly on certain cards even before that, so i'll probably have to rewrite it anyway. i'll see if i can get to it. you are allways welcome to help me out offcourse :slight_smile:

i'd love to, i'd probably learn alot, i'm trying to figure out how to create my own shaders so i'm looking through all of the examples. trying to figure out how its done. :slight_smile: