iddevnet/quake4/Effects_Performance.html
Daniel Gibson 5a7e5cbe45 Q4: Fix links within Wiki
it's more or less usable now!

all images (except for the ones of moinmoin itself) are still missing.

possibly articles are missing as well, haven't checked yet

(and the lost downloads are missing, of course)
2021-04-10 16:00:23 +02:00

251 lines
14 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="robots" content="index,nofollow">
<title>Effects Performance - Quake 4 SDK Documentation</title>
<script type="text/javascript" src="wiki/common/js/common.js"></script>
<script type="text/javascript">
<!--// common functions
// We keep here the state of the search box
searchIsDisabled = false;
function searchChange(e) {
// Update search buttons status according to search box content.
// Ignore empty or whitespace search term.
var value = e.value.replace(/\s+/, '');
if (value == '' || searchIsDisabled) {
searchSetDisabled(true);
} else {
searchSetDisabled(false);
}
}
function searchSetDisabled(flag) {
// Enable or disable search
document.getElementById('fullsearch').disabled = flag;
document.getElementById('titlesearch').disabled = flag;
}
function searchFocus(e) {
// Update search input content on focus
if (e.value == 'Search') {
e.value = '';
e.className = '';
searchIsDisabled = false;
}
}
function searchBlur(e) {
// Update search input content on blur
if (e.value == '') {
e.value = 'Search';
e.className = 'disabled';
searchIsDisabled = true;
}
}
function actionsMenuInit(title) {
// Initialize action menu
for (i = 0; i < document.forms.length; i++) {
var form = document.forms[i];
if (form.className == 'actionsmenu') {
// Check if this form needs update
var div = form.getElementsByTagName('div')[0];
var label = div.getElementsByTagName('label')[0];
if (label) {
// This is the first time: remove label and do buton.
div.removeChild(label);
var dobutton = div.getElementsByTagName('input')[0];
div.removeChild(dobutton);
// and add menu title
var select = div.getElementsByTagName('select')[0];
var item = document.createElement('option');
item.appendChild(document.createTextNode(title));
item.value = 'show';
select.insertBefore(item, select.options[0]);
select.selectedIndex = 0;
}
}
}
}
//-->
</script>
<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="wiki/modern/css/common.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="screen" href="wiki/modern/css/screen.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="print" href="wiki/modern/css/print.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="projection" href="wiki/modern/css/projection.css">
<!-- css only for MSIE browsers -->
<!--[if IE]>
<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="wiki/modern/css/msie.css">
<![endif]-->
<link rel="Start" href="./Quake4SDK.html">
<link rel="Alternate" title="Wiki Markup" href="./Effects_Performance?action=raw">
<link rel="Alternate" media="print" title="Print View" href="./Effects_Performance?action=print">
<link rel="Appendix" title="fx_overdraw_bad.jpg" href="./Effects_Performance?action=AttachFile&amp;do=view&amp;target=fx_overdraw_bad.jpg">
<link rel="Appendix" title="fx_overdraw_good.jpg" href="./Effects_Performance?action=AttachFile&amp;do=view&amp;target=fx_overdraw_good.jpg">
<link rel="Search" href="./FindPage.html">
<link rel="Index" href="./TitleIndex.html">
<link rel="Glossary" href="./WordIndex.html">
<link rel="Help" href="./HelpOnFormatting.html">
</head>
<body lang="en" dir="ltr">
<div id="header">
<div id="logo"><a href="./Quake4SDK.html"><img src="wiki/common/moinmoin.png" alt="MoinMoin Logo"></a></div>
<form id="searchform" method="get" action="">
<div>
<input type="hidden" name="action" value="fullsearch">
<input type="hidden" name="context" value="180">
<label for="searchinput">Search:</label>
<input id="searchinput" type="text" name="value" value="" size="20"
onfocus="searchFocus(this)" onblur="searchBlur(this)"
onkeyup="searchChange(this)" onchange="searchChange(this)" alt="Search">
<input id="titlesearch" name="titlesearch" type="submit"
value="Titles" alt="Search Titles">
<input id="fullsearch" name="fullsearch" type="submit"
value="Text" alt="Search Full Text">
</div>
</form>
<script type="text/javascript">
<!--// Initialize search form
var f = document.getElementById('searchform');
f.getElementsByTagName('label')[0].style.display = 'none';
var e = document.getElementById('searchinput');
searchChange(e);
searchBlur(e);
//-->
</script>
<ul id="username"><li><a href="./Effects_Performance?action=login" id="login">Login</a></li></ul>
<div id="locationline">
<ul id="pagelocation">
<li><a class="backlink" title="Click to do a full-text search for this title" href="./Effects_Performance?action=fullsearch&amp;value=linkto%3A%22Effects+Performance%22&amp;context=180">Effects Performance</a></li>
</ul>
</div>
<ul id="navibar">
<li class="wikilink"><a href="./GettingStarted.html">GettingStarted</a></li><li class="wikilink"><a href="./ScriptFile.html">ScriptFile</a></li><li class="wikilink"><a href="./MakeAMod.html">MakeAMod</a></li><li class="wikilink"><a href="./LevelEditor.html">LevelEditor</a></li><li class="wikilink"><a href="./FXEditor.html">FXEditor</a></li><li class="wikilink"><a href="./GUIEditor.html">GUIEditor</a></li><li class="wikilink"><a href="./Sounds.html">Sounds</a></li><li class="wikilink"><a href="./Animations.html">Animations</a></li><li class="wikilink"><a href="./ArtReference.html">ArtReference</a></li><li class="wikilink"><a href="./DownloadableContent.html">DownloadableContent</a></li><li class="wikilink"><a href="./RecentChanges.html">RecentChanges</a></li><li class="wikilink"><a href="./FindPage.html">FindPage</a></li><li class="wikilink"><a href="./HelpContents.html">HelpContents</a></li><li class="current"><a href="./Effects_Performance.html">Effects Performance</a></li>
</ul>
<div id="pageline"><hr style="display:none;"></div>
<ul class="editbar"><li><span class="disabled">Immutable Page</span></li><li><a href="./Effects_Performance?action=info">Info</a></li><li><a href="./Effects_Performance?action=AttachFile">Attachments</a></li><li>
<form class="actionsmenu" method="get" action="">
<div>
<label>More Actions:</label>
<select name="action"
onchange="if ((this.selectedIndex != 0) &&
(this.options[this.selectedIndex].disabled == false)) {
this.form.submit();
}
this.selectedIndex = 0;">
<option value="raw">Raw Text</option>
<option value="print">Print View</option>
<option value="RenderAsDocbook">Render as Docbook</option>
<option value="refresh">Delete Cache</option>
<option value="show" disabled class="disabled">------------</option>
<option value="SpellCheck">Check Spelling</option>
<option value="LikePages">Like Pages</option>
<option value="LocalSiteMap">Local Site Map</option>
<option value="show" disabled class="disabled">------------</option>
<option value="RenamePage" disabled class="disabled">Rename Page</option>
<option value="DeletePage" disabled class="disabled">Delete Page</option>
<option value="show" disabled class="disabled">------------</option>
<option value="MyPages">My Pages</option>
<option value="SubscribeUser">Subscribe User</option>
<option value="show" disabled class="disabled">------------</option>
<option value="Despam">Remove Spam</option>
<option value="PackagePages">Package Pages</option>
</select>
<input type="submit" value="Do">
</div>
<script type="text/javascript">
<!--// Init menu
actionsMenuInit('More Actions:');
//-->
</script>
</form>
</li></ul>
</div>
<div id="page" lang="en" dir="ltr">
<div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
<span class="anchor" id="line-1"></span><p class="line874">When creating effects, one needs to be aware of the performance hit on Quake4. Many things need to be balanced in a scene, from polygon count, textury memory useage, overdraw and physics/game code. <span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line874">The main things to be aware of are: <span class="anchor" id="line-4"></span><hr /><p class="line874"> <span class="anchor" id="line-5"></span>
<h2 id="head-420e8e00558abb3a7a7b390f3c342fb3a7a3127a">Segment count</h2>
<span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line874">Less segments are cheaper. Instead of 4 segments each with 10 particles, can you accomplish the same effect with 2 segments of 20 particles each? Every segment is a separate draw call to your video card and another set of particles for the game to process. Try unchecking segments of a complex effect and see if you notice a different. Many times a layered effect can have a segment or two removed that are just not noticeable within the big picture. <span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line867">
<h2 id="head-2546098bdf1b336c7aa4933ad38da11c9ba16a27">Overdraw</h2>
<span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line862">Overdraw is how many layers of shaders are in a scene. This can be turned on with <strong>r_showoverdraw 1</strong> at the console or by going to <strong>View&gt;Show&gt;Show Overdraw</strong> in the <a href="./FXEditor.html">FXEditor</a>. The range of color represents the severity of overdraw. From least overdraw to most overdraw: <strong>Blue -&gt; Green -&gt; Yellow -&gt; Orange -&gt; Red -&gt; Purple</strong>. <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line867"><img class="attachment" src="./Effects_Performance?action=AttachFile&amp;do=get&amp;target=fx_overdraw_bad.jpg" title="attachment:fx_overdraw_bad.jpg" /> <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line867"><img class="attachment" src="./Effects_Performance?action=AttachFile&amp;do=get&amp;target=fx_overdraw_good.jpg" title="attachment:fx_overdraw_good.jpg" /> <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><p class="line867"><a href="./FXEditor_Tab_-_Sprite.html">Sprites</a> can be very expensive when viewed in a line like a rocket trail. In some cases you might want to try using <a href="./FXEditor_Tab_-_Sprite.html">line segments</a> instead of <a href="./FXEditor_Tab_-_Sprite.html">sprites</a>. Since they always rotate to face the user, they can have much less overdraw than <a href="./FXEditor_Tab_-_Sprite.html">sprites</a>. <span class="anchor" id="line-18"></span><span class="anchor" id="line-19"></span><p class="line867">
<h2 id="head-65cdf23e8fb9c2e135668e1daeff744d9166c91e">Physics</h2>
<span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span><p class="line874">Physics on segments is very, very expensive. If you must apply physics, consider applying it to only 1 of a few segments instead of all. An example of this would be if you have rock chunks fly out of a wall when shot. Make 2 rock chunk segments, one with physics and 3 particles and another without physics that has 9 particles. When the whole effect is played, seeing the 3 rock chunks bounce adds to the effect without being as expensive as 12 particles with physics. <span class="anchor" id="line-22"></span><span class="anchor" id="line-23"></span><p class="line867">
<h2 id="head-76c0789664393f14dcff02c112b870753d8501b9">Particle Count</h2>
<span class="anchor" id="line-24"></span><span class="anchor" id="line-25"></span><p class="line874">Try to lower the count on effects and see if it really makes the effect look that much worse. Lower counts is less overdraw and lower poly counts in a given scene. Try to use less (more opaque) images rather than stacking higher counts of images that are partially translucent. <span class="anchor" id="line-26"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">Effects Performance (last edited 2005-11-08 23:41:16 by <span title="MattVainio @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./MattVainio.html" title="MattVainio @ 67.129.250.254[67.129.250.254]">MattVainio</a></span>)</p>
<div id="pagebottom"></div>
</div>
<div id="footer">
<ul class="editbar"><li><span class="disabled">Immutable Page</span></li><li><a href="./Effects_Performance?action=info">Info</a></li><li><a href="./Effects_Performance?action=AttachFile">Attachments</a></li><li>
<form class="actionsmenu" method="get" action="">
<div>
<label>More Actions:</label>
<select name="action"
onchange="if ((this.selectedIndex != 0) &&
(this.options[this.selectedIndex].disabled == false)) {
this.form.submit();
}
this.selectedIndex = 0;">
<option value="raw">Raw Text</option>
<option value="print">Print View</option>
<option value="RenderAsDocbook">Render as Docbook</option>
<option value="refresh">Delete Cache</option>
<option value="show" disabled class="disabled">------------</option>
<option value="SpellCheck">Check Spelling</option>
<option value="LikePages">Like Pages</option>
<option value="LocalSiteMap">Local Site Map</option>
<option value="show" disabled class="disabled">------------</option>
<option value="RenamePage" disabled class="disabled">Rename Page</option>
<option value="DeletePage" disabled class="disabled">Delete Page</option>
<option value="show" disabled class="disabled">------------</option>
<option value="MyPages">My Pages</option>
<option value="SubscribeUser">Subscribe User</option>
<option value="show" disabled class="disabled">------------</option>
<option value="Despam">Remove Spam</option>
<option value="PackagePages">Package Pages</option>
</select>
<input type="submit" value="Do">
</div>
<script type="text/javascript">
<!--// Init menu
actionsMenuInit('More Actions:');
//-->
</script>
</form>
</li></ul>
<ul id="credits">
<li><a href="http://moinmoin.wikiwikiweb.de/">MoinMoin Powered</a></li><li><a href="http://www.python.org/">Python Powered</a></li><li><a href="http://validator.w3.org/check?uri=referer">Valid HTML 4.01</a></li>
</ul>
</div>
</body>
</html>