Graphics.FAQ - lordmundi/wikidoctest GitHub Wiki

FAQ

Questions:

1. How do I add to the FAQ as I figure out stuff?
2. What graphics card should I buy to run DOUG?
3. What about SLI?
4. I’ve heard there is a DOUG chat room. How do I get to it?
5. What is up with pinky up there in the upper left?
6. What is the radius of the moon and earth set to? How do I change it?
7. What can I do to improve frame rates?
8. What can I do to lower DOUG’s CPU usage?
9. I see that the config file is referencing a file, but when I look for it, it isn’t there… what’s going on?
10. Is there a 64 bit comm library available so I can compile my sim in 64 bit?
11. How do I remove the frame count at the bottom of the window?
12. How do I get accurate framerates for benchmarking?
13. I’m running with a distributed graphics configuration and my plumes don’t show up. Why?
14. How can I turn off the clouds?
15. Why do I get comm errors when running without a network or a computer with the network cable unplugged?
16. Can pan/tilt rates be set per camera?
17. How can I tie a camera to a LVLH frame, or keep the camera fixed relative to the velocity of the vehicle?
18. Why are there launch pads sitting out in the ocean? What else is positioned incorrectly?
19. What am I getting crazy colors when I start DOUG?
20. Can I lock down DOUG to a single or specific processors?
21. Can I run EDGE on a remote machine and bring back the graphics over ssh forwarding like I do with other programs?
22. What version of OpenGL and GLSL does EDGE use?

Answers:

Q: How do I add to the FAQ as I figure out stuff? (^)

A: Edit this page and the syntax should be obvious. Please add to it and make the FAQ grow!!

Q: What graphics card should I buy to run DOUG? (^)

A: Update: We will try to keep the requirements page up to date with our top picks of cards to buy.

Q: What about SLI? (^)

A: A few people have experimented with support for this on Linux. So far, we haven't seen much benefit for EDGE, so we recommend you spend your money elsewhere, such as a faster CPU.

Q: I've heard there is a DOUG chat room. How do I get to it? (^)

A: If you are on linux, are on the NASA network, and have GAIM/Pidgin installed, follow these instructions here. You can use any Jabber client you want, including clients available for Windows and Mac. If you figure out how to access it with other clients, please edit the page and post the instructions for that client.

Q: What is up with pinky up there in the upper left? (^)

A: The website is hosted on a machine called "pacman" in the lab. The naming theme in the lab is video game characters.

Q: What is the radius of the moon and earth set to? How do I change it? (^)

A: UPDATE: After v2.0, these are now set in environment variables that you can override in the "DEFINES" block of your $USERDATA/user.cfg file. You can see the default values in the edge_settings.cfg file.

Q: What can I do to improve frame rates? (^)

A: Potentially, quite a few things. See the article on improving framerates.

Q: What can I do to lower DOUG's CPU usage? (^)

A: You probably don't want to do this. You normally want DOUG to have all the CPU that it can to get the best framerate that you can. If, for some reason, you are sure you want to cripple DOUG a bit to get the CPU usage down, perhaps for something more important, then see this article.

Q: I see that the config file is referencing a file, but when I look for it, it isn't there… what's going on? (^)

A: The most common reason is because the file you are looking for is contained within the package file. See the page on Understanding package files.

The other possibility is that the file does not exist on the filesystem or the package file. In this case, it is important to know that DOUG is set up to silently ignore missing files, so if it is missing from both locations, execution will continue.

Q: Is there a 64 bit comm library available so I can compile my sim in 64 bit? (^)

A: A 64-bit comm library is currently in work available. You can track the request for it here

Q: How do I remove the frame count at the bottom of the window? (^)

A: The label at the bottom of the window is drawn by the dsp_timeit plugin. To remove the framerate display, simply remove the dsp_timeit plugin from your display context (it usually has the alias "timer"). For help customizing your display context, see DisplayContext. NOTE: This is going to be turned off by default in EDGE v2.0. The -fps command line option described below is always a better option if you need framerates.

Q: How do I get accurate framerates for benchmarking? (^)

A: The dsp_timeit plugin is not a very accurate indication of framerate. If you are looking for a more accurate way to measure frame rate or to bench mark a certain configuration, try running with the "-fps" command-line option and turning off the "sync to vblank" feature of the nvidia driver.

NOTE: You can disable sync-to-vblank by adding the following to your userdata/user_env.csh file:

setenv __GL_SYNC_TO_VBLANK     0

frankie January 08, 2010, at 11:15 AM: Update: Releases 2.1 and above will likely have SYNC_TO_VBLANK defaulted to off.

Q: I'm running with a distributed graphics configuration and my plumes don't show up. Why? (^)

A: Update: This has been fixed in EDGE v1.1. If you are running v1.1 or higher and having this issue, please let me know. The following only applies to releases prior to v1.1. — frankie September 10, 2007, at 11:09 AM

The plume animation that is delivered is being driven in cev_ascent.tcl. This file looks for changes in force nodes (which is the nodes that are driven from sim data) and then turn the corresponding plume on or off. The difficulty is that along with making the plume visible or invisible, the script also modified the "mod_anim_time" attribute so that there is a somewhat random appearance to the animation to make the plumes "flicker".

Node visibility is something that is transmitted across comm, but node animation is not transmitted via comm. This means that all clients that are doing animation need to have the scripts that perform the animation running on that client. I.e., a single machine with cev_ascent.tcl performing the plume animation will not affect all the other connected clients because the animation stuff is not being sent to them.

To fix this, make sure you put cev_ascent.tcl in all of the display contexts which may need to see plumes.

NOTE: In the future this script will get changed so that the animation setup and node visibility is done in seperate scripts. That way, all the clients only need to run a script to setup the animation parameters one time at init. From then on, node visibility will be the only thing needed and that is sent over comm, so that script only needs to be run in one place. —frankie May 25, 2007, at 04:57 PM

Q: How can I turn off the clouds? (^)

A: Update: This has been fixed in EDGE v1.1. You should be able to toggle clouds on and off using the option in the "Toggles" menu. The following only applies to releases prior to v1.1. — frankie September 10, 2007, at 11:11 AM

There is an issue in EDGE 1.0 that makes this difficult. See the details of Issue # 00005 for more details.

Once the layer node capability is added, this will be as easy as making a node visible or invisible to control a defined layer in the planet2 plugin.

In the meantime, if you want to disable clouds, you can edit configs/planet2.cfg and comment out the lines for the cloud layer.

Q: Why do I get comm errors when running without a network or a computer with the network cable unplugged? (^)

A: When you want to run without comm at all, try running with the "-mode standalone switch"

$ ./run_graphics -mode standalone

Q: Can pan/tilt rates be set per camera? (^)

A: No, not currently when commanding with the keyboard, although if you are commanding cameras over comm (with a sim) or some sort of external script/plugin, then you can drive the cameras in any way you want (and even add in dynamics).

Q: How can I tie a camera to a LVLH frame, or keep the camera fixed relative to the velocity of the vehicle? (^)

A: EDGE v1.1 introduced LVLH and center of mass (COM) nodes for orbital elements and also the model source code showing how to calculate and drive this data. If you want a camera to follow an orbital element but be have the camera rotation tied to LVLH, simply reparent your camera to the corresponding LVLH node for that element.

Q: Why are there launch pads sitting out in the ocean? What else is positioned incorrectly? (^)

A: Consider everything positioned incorrectly. :)

Seriously though, everything in EDGE is set up with the intention of the user positioning it, whether that be from a sim, or manually, or whatever. EDGE follows the same guideline as DOUG - NADS. NADS means "Not a Data Source". This means users must bring their own data, models, and anything else that is important for validity of their work. Models are not intended to be used as data (i.e., don't go measuring something to see if it will fit). Positions of things are the same way. You must set things. If you need something to be correct, be it a model or position of a model, you need to set this yourself. EDGE is NADS!

So, the launch pads out in the ocean is an attempt to drive this point home. If you wants these pads in a particular place, you need to figure out where you want them and put them there. We don't want people to assume that we are doing this for them. With the models out in the ocean, people should get the message.

This also goes for planetary bodies like the moon and earth. If you need these positioned, you should drive them. This could be with a state file for static positioning, scripts, plugins, or sim data. It's up to you. It's all up to you.

Q: What am I getting crazy colors when I start DOUG? (^)

A: Ahh yes… we call these the "Timothy Leary Visuals". See the crazy colors troubleshooting page for more details.

Q: Can I lock down DOUG to a single or specific processors? (^)

A: We don't test any of this, but people have reported good results locking down DOUG to specific processors using the linux "taskset" command. Do a "man taskset" to see the arguments. Since the planet2 plugin will want some parallel threads, I would recommend giving DOUG at least 2 cores.

Q: Can I run EDGE on a remote machine and bring back the graphics over ssh forwarding like I do with other programs? (^)

A: Not really. For most applications this works fine - the X connection is tunneled over the network to the X server on another machine. But in the case of any 3d accelerated program, the application requires direct access to a local 3d video card and transfers and renders things directly on that card. This can't happen if the X connection is going across the network. You can check this by running glxinfo (or i think gde script in EDGE also reports it) and see what it reports for "Direct Rendering". If you don't have direct rendering support (which can also happen if your video card or video driver doesn't support 3d acceleration), then EDGE won't run well at all. You'll also get a warning from EDGE when you run saying direct rendering isn't available.

Q: What version of OpenGL and GLSL does EDGE use? (^)

A: Well, it sort of depends.

Essentially, EDGE is using the latest PpenGL version that the video driver supports the OpenGL Compatibility profile for. So, many of the newer machines and newer drivers are all going to use OpenGL 4.4 or something close to that. The compatibility profiles keeps all the deprecated functionality.

In terms of GLSL, it will be the latest that the driver allows. For example, on mac it is much lower since Apple doesn't allow the compatibility profile, so older OpenGL versions have to be used (maybe 1.2 or so). You can specify the version of GLSL at the top of your shader with a pragma so you may want to try various versions. Quite a few of our shaders use "#version 120" at the top, but shaders with higher GLSL versions have been used by some users in their plugins.