Draw masks
Jump to navigation
Jump to search
This article is a stub. You can help the wiki by expanding it. |
Note In its current form, this section/article is largely based on quotes collected from various related discussions/channels (devel list, forum etc) using the Instant-Cquotes script. Wiki users and other contributors are encouraged to help rewrite/edit contents accordingly to help get rid of unnecessary quoting (i.e. while the wiki is not intended to be a collection of quotes, quotes are sometimes the best/easiest way to bootstrap new articles, while also providing a good way to link back to related discussions in the archives).
While rewriting usually only entails changing first person speech to 3rd person. However, please try to retain references/links to the original discussion whenever possible. |
Troubleshooting |
---|
Another goal is to add more node bits (and a GUI dialog to control them) so various categories of objects can be disabled during the update pass. This will mean the direct hit of, say, AI models vs particles vs random trees can be measured. Of course it won't account for resources (memory, textures) burned by such things, but would still help different people identify slowness on their setups. — James Turner (Jul 19th, 2012). Re: [Flightgear-devel] Rendering passes question.
(powered by Instant-Cquotes) |
var (width,height) = (320,160);
var title = 'Draw Masks';
var window = canvas.Window.new([width,height],"dialog").set('title',title);
window.del = func()
{
print("Cleaning up window:",title,"\n");
call(canvas.Window.del, [], me);
};
# adding a canvas to the new window and setting up background colors/transparency
var myCanvas = window.createCanvas().set("background", canvas.style.getColor("bg_color"));
# creating the top-level/root group which will contain all other elements/group
var root = myCanvas.createGroup();
var drawMasks = props.globals.getNode("/sim/rendering/draw-mask").getChildren();
# create a new layout
window.Layout = canvas.VBoxLayout.new();
# assign it to the Canvas
myCanvas.setLayout(window.Layout);
foreach(var mask; drawMasks) {
(func() {
var m = mask;
# print("Found mask:", mask.getName(), "=", mask.getValue() );
var checkbox = canvas.gui.widgets.CheckBox.new(root, canvas.style, {wordWrap: 0})
.setText( "render " ~ m.getName() )
.listen("toggled", func(e) {
setprop(m.getPath(), e.detail.checked);
})
.setChecked( m.getValue() );
window.Layout.addItem(checkbox);
}) ();
}
There's so called "draw-masks" which are property-controlled switches for enabling/disabling rendering of certain scene details, including 1) scenery/terrain, 2) aircraft, 3) models, 4) clouds.This can be used for troubleshooting performance issues - you can basically toggle individual scene graphs on/off, to see if/how performance is affected.For example, if performance improves dramatically by disabling the terrain, you are mainly affected scenery complexity.Equally, disabling the (main) aircraft, will tell you if it's the complexity of the 777 3D model (cockpit). — Hooray (Nov 29th, 2014). Re: FlightGear 3.2 with B777 running extremely slow.
(powered by Instant-Cquotes) |
Beginning with FlightGear 3.1+, you can also toggle individual scenegraph traversal masks on/off (these can be changed at runtime using the Property browser:--prop:browser=/sim/rendering/draw-mask--prop:/sim/rendering/draw-mask/terrain=0--prop:/sim/rendering/draw-mask/aircraft=0--prop:/sim/rendering/draw-mask/models=0--prop:/sim/rendering/draw-mask/clouds=0 — Hooray (Nov 29th, 2014). Re: FlightGear 3.2 with B777 running extremely slow.
(powered by Instant-Cquotes) |
Cockpit
I think he wants to only load the exterior model for better performance, as far as I know, there is no simple way to do that. |
Scenery
Note For the time being, the Particle System does not use any of the standard Draw Masks, but a separate switch properly located at: /sim/rendering/particles (at some point, this will probably be unified by introducing an additional property[1] and phasing out this one over time, as per [1]).
|
I'd like to see both LOD range and user settable masks in the .stg file. |
Instead of a whole new loader, I think we can just modify the existing .STG loader and ignore objects not in the draw mask? — Peter Sadrozinski (Jan 8th, 2016). Re: [Flightgear-devel] Making project3000 and osm2city part of
terrasync?.
(powered by Instant-Cquotes) |
I agree. I think this is not very hard to implement.
And I am not surprised that others had the same idea already before me. — pommesschranke (Nov 8th, 2015). Re: Populate 3000 airports in one day.
(powered by Instant-Cquotes) |
To open a property browser with the corresponding properties, use --prop:browser=/sim/rendering/draw-mask
(can be also added to your fgfsrc file)