1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> 3<head> 4<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5<meta http-equiv="Content-Style-Type" content="text/css" /> 6<title>NintendoWare 3D Graphics Development Environment Revision History</title> 7<style type="text/css"> 8<!-- 9 10H1 11{ 12 font-weight : bold; 13 font-size : 250%; 14 text-align : left; 15 color : #46f; 16 margin : 0em 0em 0.5em 0em; 17} 18 19H2 20{ 21 font-weight : bold; 22 font-size : 150%; 23 text-align : left; 24 margin : 2em 0em 0.5em 0em; 25 padding-top : 8pt; 26 border-top-style : double; 27 border-top-width : 3px; 28} 29 30H3 31{ 32 font-weight : bold; 33 font-size : 120%; 34 margin : 1em 0em 0.5em 0em; 35 padding-top : 8pt; 36 border-top-style : solid; 37 border-top-width : 1px; 38} 39 40H4 41{ 42 font-weight : normal; 43 font-size : 100%; 44 margin : 0em 0em 0em 0.5em; 45} 46 47DIV.date 48{ 49 font-size : normal; 50 text-align : right; 51 margin : 0pt 0pt 12pt 0pt; 52} 53 54DIV.licence 55{ 56 margin: 0em; 57 border-style : solid; 58 border-width : 1px; 59} 60 61P 62{ 63 font-size : normal; 64 margin : 0em 1em 0.5em 1em; 65 line-height : 150%; 66} 67 68PRE 69{ 70 font-size : normal; 71 margin : 0em 0em 1em 2em; 72 line-height : 120%; 73} 74 75DT 76{ 77 margin : 1em 0em 0em 1em; 78} 79DD 80{ 81 margin-left : 3em; 82} 83UL 84{ 85 margin-top : 0em; 86} 87 88--> 89</style> 90</head> 91<body> 92 93<h1>NintendoWare 3D Graphics Development Environment Revision History</h1> 94 95<h2>Index</h2> 96 97<h3><a href="#version_1_2_16">■ 1.2.16</a></h3> 98<h4>Bug fixes</h4> 99<ul style="list-style-type:none;"> 100<li><a href="#note_38-G01">Note 38-G01: (Demo) Fixed a bug related to multi-textures created by ProjectionShadowDemo and ShadowMapDemo</a></li> 101</ul> 102<h3><a href="#version_1_2_14">■ 1.2.14</a></h3> 103<h4>Bug fixes</h4> 104<ul style="list-style-type:none;"> 105<li><a href="#note_36-G01">Note 36-G01: (Library) Fixed problem in rendering that occurred after switching from a geometry shader to a vertex shader</a></li> 106</ul> 107<h3><a href="#version_1_2_13">■ 1.2.13</a></h3> 108<h4>Bug fixes</h4> 109<ul style="list-style-type:none;"> 110<li><a href="#note_35-G01">Note 35-G01: (Library) Fixed problem that prevented configuration of lookup tables for dynamically generated fragment lights</a></li> 111</ul> 112<h3><a href="#version_1_2_7">■ 1.2.7</a></h3> 113<h4>Bug fixes</h4> 114<ul style="list-style-type:none;"> 115<li><a href="#note_29-G01">Note 29-G01: (Library) Fixed problem with irregular replay of quantized animation.</a></li> 116</ul> 117<h3><a href="#version_1_2_1">■ 1.2.1</a></h3> 118<h4>Bug fixes</h4> 119<ul style="list-style-type:none;"> 120<li><a href="#note_23-G01">Note 23-G01: (Library) Fixed problem of VertexColorScale being set to 1 by SetAmbient of ResMaterialColor.</a></li> 121<li><a href="#note_23-G02">Note 23-G02: (Library) Fixed compile error with the <CODE>Signal</CODE> class <CODE>GetMemorySizeForFixedSizedSignal</CODE> function</a></li> 122<li><a href="#note_23-G03">Note 23-G03: (Library) Deleted ASSERT for checking texture 32MB boundary in FCRAM</a></li> 123<li><a href="#note_23-G04">Note 23-G04: (Library) Fixed a bug where the GPU would possibly stall due to failed invalidation of the vertex load array</a></li> 124<li><a href="#note_23-G05">Note 23-G05: (Library) <CODE>ShaderParameter</CODE> is now invariably set when <CODE>ShaderProgram</CODE> has been changed</a></li> 125</ul> 126<h3><a href="#version_1_2_0">■ 1.2.0</a></h3> 127<h4>Added and Changed Features</h4> 128<ul style="list-style-type:none;"> 129<li><a href="#note_22-G01">Note 22-G01: (Library) Changed implementation so the library does not perform allocation using size 0</a></li> 130<li><a href="#note_22-G02">Note 22-G02: (Library) Added BranchVisible for preventing rendering below one's own node in the scene tree</a></li> 131<li><a href="#note_22-G03">Note 22-G03: (Library) Added a function for finding the size of memory required for some scene node and animation-related classes</a></li> 132<li><a href="#note_22-G04">Note 22-G04: (Library) Added a function allowing specification of the states that can be cleared by ResetState</a></li> 133<li><a href="#note_22-G05">Note 22-G05: (Library) Added ParticleMaterialActivator for setting materials for particles</a></li> 134<li><a href="#note_22-G09">Note 22-G09: (Library) Plans to revise particles in 1.3</a></li> 135<li><a href="#note_22-G10">Note 22-G10: (Library) Changed the list of ResParticleInitializer/Updater TargetStreams to a single value</a></li> 136<li><a href="#note_22-G12">Note 22-G12: (Library) Added an API function for controlling particles</a></li> 137<li><a href="#note_22-G15">Note 22-G15: (Library) Added a mode where blend weights fo AnimInterpolator are not normalized</a></li> 138<li><a href="#note_22-G16">Note 22-G16: (Library) Added a validity check to the Builder class for animation-related classes</a></li> 139<li><a href="#note_22-G17">Note 22-G17: (Library) Changed specifications so that textures, vertices, and vertex index images are gathered together in a contiguous area in a file and then output</a></li> 140<li><a href="#note_22-G18">Note 22-G18: (Library) Changed specification so bounding information can be added at the vertex index level [Experimental Specification]</a></li> 141<li><a href="#note_22-G20">Note 22-G20: (Library) Added an ASSER when texture images cross 32MB boundaries</a></li> 142<li><a href="#note_22-G23">Note 22-G23: (Library) Changed specifications so that DefaultShaderAutoSelector is applied only to DefaultShader</a></li> 143<li><a href="#note_22-G25">Note 22-G25: (Library) Added a feature for disabling the key cache used for render sorting at the mesh level</a></li> 144<li><a href="#note_22-G26">Note 22-G26: (Library) Optimized vertex attributes for the GPU</a></li> 145<li><a href="#note_22-G27">Note 22-G27: (Library) Added methods to the demo particle class</a></li> 146<li><a href="#note_22-G28">Note 22-G28: (Library) Added an option for changing the blending method if an animation member does not exist when using AnimInterpolator or TransformAnimInterpolator</a></li> 147<li><a href="#note_22-G33">Note 22-G33: (Library) Integrated TextureLocationFlagSetter, IndexStreamLocationFlagSetter, and VertexStreamLocationFlagSetter</a></li> 148<li><a href="#note_22-G34">Note 22-G34: (Demo) Changed specifications so that the buffer is cleared beginning from the farthest model rather than using glClear</a></li> 149<li><a href="#note_22-G35">Note 22-G35: (Demo) Added ParticleScaleDemo</a></li> 150<li><a href="#note_22-G36">Note 22-G36: (Demo) Changed the use of the demo particle class and demo contents used in particle demos</a></li> 151<li><a href="#note_22-G37">Note 22-G37: (Demo) Changed the location of data for demos</a></li> 152<li><a href="#note_22-G40">Note 22-G40: (Viewer) Abolished the simple actual hardware Viewer</a></li> 153</ul> 154<h4>Bug fixes</h4> 155<ul style="list-style-type:none;"> 156<li><a href="#note_22-G06">Note 22-G06: (Library) Fixed a bug where NULL was being set for AnimInterpolator by ReplaceAnimObject</a></li> 157<li><a href="#note_22-G07">Note 22-G07: (Library) Fixed a bug where billboards that include scaling were not being calculated correctly</a></li> 158<li><a href="#note_22-G08">Note 22-G08: (Library) Revised the initial Transform when dynamically creating nodes, cameras, lights, or fogs</a></li> 159<li><a href="#note_22-G11">Note 22-G11: (Library) Changed velocity-initial velocity "randomize specified direction"</a></li> 160<li><a href="#note_22-G13">Note 22-G13: (Library) Changed memory allocator selection for particles</a></li> 161<li><a href="#note_22-G14">Note 22-G14: (Library) Revised blend weight normalization of AnimInterpolator</a></li> 162<li><a href="#note_22-G19">Note 22-G19: (Library) Changed specifications so that glBindFramebuffer(NULL) is not executed when NULL has been specified to the RenderContext::SetRenderTarget function</a></li> 163<li><a href="#note_22-G21">Note 22-G21: (Library) Inverted the method of creating fog ZFlip and fog tables</a></li> 164<li><a href="#note_22-G22">Note 22-G22: (Library) Fixed a bug where all lights would go out when NW_GFX_VERTEX_LIGHT_ENABLED is disabled</a></li> 165<li><a href="#note_22-G24">Note 22-G24: (Library) Fixed a bug where evaluation values beyond the end of a curve were incorrect under particular conditions when using visibility animations</a></li> 166<li><a href="#note_22-G29">Note 22-G29: (Library) Fixed a bug where the hash values in the ShadingParameter and FragmentLightingTable were wrong</a></li> 167<li><a href="#note_22-G30">Note 22-G30: (Library) Fixed a bug where Reset for model visibility animations was not working</a></li> 168<li><a href="#note_22-G31">Note 22-G31: (Library) Fixed a problem where the framebuffer was not being correctly released by <CODE>OnScreenBuffer</CODE></a></li> 169<li><a href="#note_22-G32">Note 22-G32: (Library) Fixed a bug where original uniform definitions were being added by custom shaders</a></li> 170<li><a href="#note_22-G38">Note 22-G38: (Converter) Fixed a problem with vertex index data alignment</a></li> 171<li><a href="#note_22-G39">Note 22-G39: (Converter) Fixed a bug where binary conversion would fail outside the Japanese and English language environments such as when using French or German</a></li> 172</ul> 173<h3><a href="#version_1_1_0">■ 1.1.0</a></h3> 174<h4>Added and Changed Features</h4> 175<ul style="list-style-type:none;"> 176<li><a href="#note_19-G01">Note 19-G01: (Library)【Important】 Changed specifications so that gl texture objects and vertex buffer objects are not created by texture data or vertex data</a></li> 177<li><a href="#note_19-G02">Note 19-G02: (Library)[Important] Added the SetLocationAddress function for directly specifying the texture data or vertex data address</a></li> 178<li><a href="#note_19-G03">Note 19-G03: (Library)[Important] Added the FrameBufferObject class</a></li> 179<li><a href="#note_19-G04">Note 19-G04: (Library)[Important] Revised specifications so that gl functions are not used for frame buffer settings</a></li> 180<li><a href="#note_19-G05">Note 19-G05: (Library)[Important] Support for vertex interleave format</a></li> 181<li><a href="#note_19-G06">Note 19-G06: (Library)[Important] Changed RenderTarget width and height specifications</a></li> 182<li><a href="#note_19-G07">Note 19-G07: (Library)[Important] Changed specifications so NULL is returned when memory allocation for a particle-related class fails</a></li> 183<li><a href="#note_19-G08">Note 19-G08: (Library)[Important] Changed the light direction used for rendering from Direction of the ResLight class to Direction of the Light class</a></li> 184<li><a href="#note_19-G09">Note 19-G09: (Library)[Important] Split the SceneEnvironment-related BufferOption off of ShadingParameter</a></li> 185<li><a href="#note_19-G10">Note 19-G10: (Library)[Important] Changed the timing at which the callback function is called after the WorldMatrix is calculated</a></li> 186<li><a href="#note_19-G11">Note 19-G11: (Library)[Important] Changed specifications so that MaterialIdGenerator is no longer automatically created by SceneInitializer</a></li> 187<li><a href="#note_19-G12">Note 19-G12: (Library)[Important] Changed the AnimFrameController user data to non-const type</a></li> 188<li><a href="#note_19-G15">Note 19-G15: (Library)[Important] Moved SceneEnvironment::SetActiveCamera to RenderContext::SetActiveCamera </a></li> 189<li><a href="#note_19-G16">Note 19-G16: (Library)[Important] Abolished the both face culling setting ResRasterization::CULLINGMODE_ALL</a></li> 190<li><a href="#note_19-G17">Note 19-G17: (Library)[Important] Abolished the creation of OpenGL program objects</a></li> 191<li><a href="#note_19-G18">Note 19-G18: (Library) Added a feature for creating nodes that cannot be animated for improved performance</a></li> 192<li><a href="#note_19-G20">Note 19-G20: (Library) Changed the implementation of SortingMaterialIdGenerator</a></li> 193<li><a href="#note_19-G21">Note 19-G21: (Library) Abolished the SetSampler member of the ResTextureMapper class and added a separate parameter accessor</a></li> 194<li><a href="#note_19-G22">Note 19-G22: (Library) Added material sharing among models</a></li> 195<li><a href="#note_19-G25">Note 19-G25: (Library) Changed specifications so that an assert is executed for billboards when using ModelCoordinate</a></li> 196<li><a href="#note_19-G26">Note 19-G26: (Library) Extended the SetRenderTarget member of the RenderContext class</a></li> 197<li><a href="#note_19-G27">Note 19-G27: (Library) Abolished the Activate method from the Material class for optimization purposes</a></li> 198<li><a href="#note_19-G28">Note 19-G28: (Library) Added Model::UserParameter as a user-configurable parameter</a></li> 199<li><a href="#note_19-G29">Note 19-G29: (Library) Added a function for generating command for ShadowMap and an API member function for changing FragmentOperationMode</a></li> 200<li><a href="#note_19-G30">Note 19-G30: (Library) Changed the reference destination of the flag for skipping TransformNode calculations from WorldTransform to Transform</a></li> 201<li><a href="#note_19-G31">Note 19-G31: (Library) Abolished IsBranchWorldMatrixCalculationEnabled for skipping calculations for self and child nodes below</a></li> 202<li><a href="#note_19-G32">Note 19-G32: (Library) Support of named visibility at the node level under DCC</a></li> 203<li><a href="#note_19-G33">Note 19-G33: (Library) Support for named visibility animations at the node level under DCC</a></li> 204<li><a href="#note_19-G34">Note 19-G34: (Library) Added OffscreenBuffer</a></li> 205<li><a href="#note_19-G35">Note 19-G35: (Library) Added a feature to allow binding multiple animations to a single model</a></li> 206<li><a href="#note_19-G36">Note 19-G36: (Library) Added an API member function for dynamically swapping lookup tables</a></li> 207<li><a href="#note_19-G37">Note 19-G37: (Library) Added an API member function for controlling animation frames</a></li> 208<li><a href="#note_19-G38">Note 19-G38: (Library) Added functions to BaseAnimEvaluator for accessing AnimFrameController user data</a></li> 209<li><a href="#note_19-G39">Note 19-G39: (Library) Added FLAG_IS_VIEW_DEPENDENCE_FORCE_CALCULATION_ENABLED</a></li> 210<li><a href="#note_19-G40">Note 19-G40: (Library) Changed constructors that only specified Signal size</a></li> 211<li><a href="#note_19-G41">Note 19-G41: (Library) Abolished RelativeHashMaterialIdGenerator</a></li> 212<li><a href="#note_19-G43">Note 19-G43: (Library) Changed specifications of BaseAnimEvaluator::ChangeAnim()</a></li> 213<li><a href="#note_19-G46">Note 19-G46: (Library) Added a function for creating empty animation resources</a></li> 214<li><a href="#note_19-G47">Note 19-G47: (Library) Added a special version pointer to Foreach* of ResGraphicsFile</a></li> 215<li><a href="#note_19-G48">Note 19-G48: (Library) Added ForeachModelMaterial to ResGraphicsFile</a></li> 216<li><a href="#note_19-G49">Note 19-G49: (Library) Added a function for binding animations that returns Result</a></li> 217<li><a href="#note_19-G51">Note 19-G51: (Library) Specifications have been expanded so that SceneUpdater can be inherited and used</a></li> 218<li><a href="#note_19-G52">Note 19-G52: (Library) Abolished BufferCount of SceneBuilder</a></li> 219<li><a href="#note_19-G53">Note 19-G53: (Library) Added a function for skipping depth calculations when adding render targets to RenderQueue</a></li> 220<li><a href="#note_19-G54">Note 19-G54: (Library) Added the GetOwnerData function fo the ResTextureSampler class</a></li> 221<li><a href="#note_19-G55">Note 19-G55: (Library) Revised the error check used with CommandCacheManager::Free</a></li> 222<li><a href="#note_19-G56">Note 19-G56: (Library) Added user data to ResSkeleton</a></li> 223<li><a href="#note_19-G59">Note 19-G59: (Library) Changed WorldTransform::Scale of TransformNode and Skeleton to a scale value that includes one's own node (bone)</a></li> 224<li><a href="#note_19-G60">Note 19-G60: (Library) Changed particle emitter behavior when the playback rate exceeds 1</a></li> 225<li><a href="#note_19-G61">Note 19-G61: (Library) Added an API function for changing vertex parameter values</a></li> 226<li><a href="#note_19-G62">Note 19-G62: (Library) Added ParticleEmitterArray and ParticleModelArray to SceneContext</a></li> 227<li><a href="#note_19-G64">Note 19-G64: (Library) Added a feature for checking values passed to the particle shader</a></li> 228<li><a href="#note_19-G65">Note 19-G65: (Library) Abolished ID streams</a></li> 229<li><a href="#note_19-G66">Note 19-G66: (Library) RenderColorFormat::RENDER_COLOR_FORMAT_RGB565_OES has been renamed RENDER_COLOR_FORMAT_RGB565</a></li> 230<li><a href="#note_19-G67">Note 19-G67: (Library) Support for Velocity-Initial Velocity "randomize specified direction"</a></li> 231<li><a href="#note_19-G68">Note 19-G68: (Shader) Corrected mistakes in a register name and associated definition name in VertexShader.h</a></li> 232<li><a href="#note_19-G70">Note 19-G70: (Demo) Added shadow demos</a></li> 233<li><a href="#note_19-G71">Note 19-G71: (Demo) Added ConstraintDemo</a></li> 234<li><a href="#note_19-G72">Note 19-G72: (Demo) Added LowLayerAnimationDemo</a></li> 235<li><a href="#note_19-G73">Note 19-G73: (Demo) Added AnimationBlendDemo</a></li> 236<li><a href="#note_19-G74">Note 19-G74: (Demo) Added AnimationChangeDemo</a></li> 237<li><a href="#note_19-G75">Note 19-G75: (Demo) Added PartialAnimationDemo</a></li> 238<li><a href="#note_19-G76">Note 19-G76: (Demo) Added DynamicMaterialDemo</a></li> 239<li><a href="#note_19-G77">Note 19-G77: (Demo) Added ParticleLowLayerDemo</a></li> 240<li><a href="#note_19-G79">Note 19-G79: (Demo) Changed the demo memory management method</a></li> 241<li><a href="#note_19-G80">Note 19-G80: (Converter) Revised specifications so that normals are deleted if a material light is disabled</a></li> 242<li><a href="#note_19-G81">Note 19-G81: (Converter) Changed specifications so that vertices are output in interleave format by default</a></li> 243<li><a href="#note_19-G82">Note 19-G82: (Converter) Revised specifications so that a warning is issued for the --auto_create_shader option during script execution</a></li> 244<li><a href="#note_19-G83">Note 19-G83: (Simple Actual Hardware Viewer) Scheduled abolishment of the simple actual hardware viewer in NW4C 1.2.0</a></li> 245</ul> 246<h4>Bug fixes</h4> 247<ul style="list-style-type:none;"> 248<li><a href="#note_19-G13">Note 19-G13: (Library)[Important] Fixed a bug with the ResTextureCombiner::Combine definition</a></li> 249<li><a href="#note_19-G14">Note 19-G14: (Library)[Important] Revised SafeDestroyBranchAll</a></li> 250<li><a href="#note_19-G19">Note 19-G19: (Library) Fixed a bug in line with specification changes to AnimInterpolator and TransformAnimInterpolator</a></li> 251<li><a href="#note_19-G23">Note 19-G23: (Library) Revised behavior so that when a skeleton has been shared UpdateView is not performed for the shared skeleton</a></li> 252<li><a href="#note_19-G24">Note 19-G24: (Library) Revised specifications so that Skeleton::m_IsUpdated is not changed by SkeletonUpdater</a></li> 253<li><a href="#note_19-G42">Note 19-G42: (Library) Changed the initial value of the IsFixedSizeMemory parameter</a></li> 254<li><a href="#note_19-G44">Note 19-G44: (Library) Deleted unused members of ResImageLookupTable</a></li> 255<li><a href="#note_19-G45">Note 19-G45: (Library) Fixed a bug where operations were not being performed correctly for SkeletalModel objects whose Model Translate Offset was ParticleModel or Model Coordinate</a></li> 256<li><a href="#note_19-G50">Note 19-G50: (Library) Changed specifications of material animation group original values</a></li> 257<li><a href="#note_19-G57">Note 19-G57: (Library) Fixed a bug where light and camera transform animations were not being output correctly</a></li> 258<li><a href="#note_19-G58">Note 19-G58: (Library) Fixed a bug where the animation evaluation value was sometimes undefined</a></li> 259<li><a href="#note_19-G63">Note 19-G63: (Library) Fixed a bug where the time difference with the emission destination was not taken into account</a></li> 260<li><a href="#note_19-G69">Note 19-G69: (Shader) Revised the particle default shader</a></li> 261<li><a href="#note_19-G78">Note 19-G78: (Demo) Corrected a problem with camera control update processing</a></li> 262</ul> 263<h3><a href="#version_1_0_1">■ 1.0.1</a></h3> 264<h4>Added and Changed Features</h4> 265<ul style="list-style-type:none;"> 266<li><a href="#note_18-G05">Note 18-G05: (Shader) Output texcoord1 using a particle shader.</a></li> 267</ul> 268<h4>Bug fixes</h4> 269<ul style="list-style-type:none;"> 270<li><a href="#note_18-G01">Note 18-G01: (Runtime) Revised the GPU command for setting LookupTable.</a></li> 271<li><a href="#note_18-G02">Note 18-G02: (Runtime) Changed render queue operations when using a material buffer</a></li> 272<li><a href="#note_18-G03">Note 18-G03: (Runtime) Revised DisconnectAndDestroy of Signal</a></li> 273<li><a href="#note_18-G04">Note 18-G04: (Runtime) Fixed a bug where ChangeAnim of AnimEvaluator and TransformAnimEvaluator was not functioning correctly</a></li> 274<li><a href="#note_18-G06">Note 18-G06: (Shader) Increased the accuracy of rotation of the particle shader</a></li> 275<li><a href="#note_18-G07">Note 18-G07: (Demo) Resolved tearing of the upper screen (for the right eye)</a></li> 276</ul> 277<h3><a href="#version_1_0_0">■ 1.0.0</a></h3> 278<h4>Added and Changed Features</h4> 279<ul style="list-style-type:none;"> 280<li><a href="#note_17-G01">Note 17-G01: (Library) Changed the API functions SceneInitializer, IMaterialIdGenerator and RelativeHashMaterialIdGenerator</a></li> 281<li><a href="#note_17-G02">Note 17-G02: (Library) Moved the visible flag for models from a resource to an instance</a></li> 282<li><a href="#note_17-G03">Note 17-G03: (Library) Fixed a billboard bug, optimized WorldMatrixUpdater, and abolished the Update method of WorldMatrixUpdater</a></li> 283<li><a href="#note_17-G04">Note 17-G04: (Library) Increased the speed of frame format skeletal animations</a></li> 284<li><a href="#note_17-G05">Note 17-G05: (Library) Increased the speed when there are many animation members</a></li> 285<li><a href="#note_17-G06">Note 17-G06: (Library) Added a way to switch animations at high speed</a></li> 286<li><a href="#note_17-G07">Note 17-G07: (Library) Added and revised the AnimEvaluator interface</a></li> 287<li><a href="#note_17-G11">Note 17-G11: (Library) Added DynamicBuilder to ResImageTexture</a></li> 288<li><a href="#note_17-G12">Note 17-G12: (Library) Added LightEnabled to ResLight</a></li> 289<li><a href="#note_17-G13">Note 17-G13: (Library) Moved resource-related classes to the res namespace</a></li> 290<li><a href="#note_17-G14">Note 17-G14: (Library) Support for light animations</a></li> 291<li><a href="#note_17-G16">Note 17-G16: (Library) Changed the defined names for types of transparencies</a></li> 292<li><a href="#note_17-G17">Note 17-G17: (Library) Split frame format skeletal animation data into separate SRT components</a></li> 293<li><a href="#note_17-G19">Note 17-G19: (Library) Added a function for applying an offset to a model's translation value</a></li> 294<li><a href="#note_17-G20">Note 17-G20: (Library) Added a function for resetting the state of an individual SceneEnvironment</a></li> 295<li><a href="#note_17-G21">Note 17-G21: (Library) Changed the behavior when an out-of-bounds index has been specified for an nw::gfx::Skeleton get matrix function</a></li> 296<li><a href="#note_17-G23">Note 17-G23: (Library) Deleted the nw::gfx::GlSystem::SetGlManager function</a></li> 297<li><a href="#note_17-G24">Note 17-G24: (Library) Added a feature for uniquely controlling Model display with SceneUpdater::SubmitView</a></li> 298<li><a href="#note_17-G25">Note 17-G25: (Library) Changed the interpretation of PolygonOffset values</a></li> 299<li><a href="#note_17-G26">Note 17-G26: (Library) Changed specifications so that PolygonOffset can be used even when using wScale</a></li> 300<li><a href="#note_17-G32">Note 17-G32: (Library) Eliminated the 32MB boundary restriction on textures</a></li> 301<li><a href="#note_17-G33">Note 17-G33: (Library) Added SortingMaterialIdGenerator for sorting in material order and attaching material IDs in order.</a></li> 302<li><a href="#note_17-G34">Note 17-G34: (Library) Changed the GPU command for particles</a></li> 303<li><a href="#note_17-G35">Note 17-G35: (Library) Changed the call to ParticleSceneUpdater::SwapBuffer</a></li> 304<li><a href="#note_17-G36">Note 17-G36: (Library) Changed the determination when destroying the parent of a particle child</a></li> 305<li><a href="#note_17-G37">Note 17-G37: (Library) Changed specifications so that SDK functions are used to flush the particle VBO</a></li> 306<li><a href="#note_17-G38">Note 17-G38: (Shader) Optimized the vertex shader and changed several registers</a></li> 307<li><a href="#note_17-G43">Note 17-G43: (Demo) Started double buffering the command list</a></li> 308<li><a href="#note_17-G44">Note 17-G44: (Demo) Added MultiInstanceDemo</a></li> 309<li><a href="#note_17-G45">Note 17-G45: (Demo) Added MultiAnimationDemo</a></li> 310<li><a href="#note_17-G46">Note 17-G46: (Demo) Added ParticleMultiEmitterDemo and ParticleMultiModelDemo</a></li> 311<li><a href="#note_17-G49">Note 17-G49: (Demo) Added a feature for checking for memory leaks to demo programs</a></li> 312</ul> 313<h4>Bug fixes</h4> 314<ul style="list-style-type:none;"> 315<li><a href="#note_17-G08">Note 17-G08: (Library) Fixed a bug where data would be updated multiple times when sharing a skeleton</a></li> 316<li><a href="#note_17-G09">Note 17-G09: (Library) Fixed a bug with light positions</a></li> 317<li><a href="#note_17-G10">Note 17-G10: (Library) Fixed a bug where render commands would become unusable</a></li> 318<li><a href="#note_17-G15">Note 17-G15: (Library) Corrected a problem with billboards</a></li> 319<li><a href="#note_17-G18">Note 17-G18: (Library) Fixed a bug where Translate would be overwritten for frame format skeletal animations for which there was no Translate</a></li> 320<li><a href="#note_17-G22">Note 17-G22: (Library) Corrected a problem with crashing when freeing models</a></li> 321<li><a href="#note_17-G27">Note 17-G27: (Library) Deleted the GetMask and SetMask function of ResStencilOperation</a></li> 322<li><a href="#note_17-G28">Note 17-G28: (Library) Fixed a bug occurring when FLAG_BUFFER_RASTERIZATION was enabled using nw::gfx::Model buffer options</a></li> 323<li><a href="#note_17-G29">Note 17-G29: (Library) Deleted the IRenderPass, ISceneRenderer and SceneRenderer classes</a></li> 324<li><a href="#note_17-G30">Note 17-G30: (Library) Corrected a problem where fog was not being applied correctly</a></li> 325<li><a href="#note_17-G31">Note 17-G31: (Library) Corrected a problem with camera Transform animations</a></li> 326<li><a href="#note_17-G39">Note 17-G39: (Shader) Fixed a problem with projection mapping SRT</a></li> 327<li><a href="#note_17-G40">Note 17-G40: (Library1) Added an option for adding a function for applying an offset to a model's translation value</a></li> 328<li><a href="#note_17-G41">Note 17-G41: (Shader) Revised the quaternion calculation algorithm</a></li> 329<li><a href="#note_17-G42">Note 17-G42: (Demo) Corrected the spelling mistakes in the API</a></li> 330<li><a href="#note_17-G47">Note 17-G47: (Demo) Changed all demos except SimpleDemo to stereo display</a></li> 331<li><a href="#note_17-G48">Note 17-G48: (Demo) Changed the GPU load display</a></li> 332<li><a href="#note_17-G50">Note 17-G50: (Simple Actual Hardware Viewer) Fixed a bug where the display would crash on a texture pattern animation</a></li> 333</ul> 334<h3><a href="#version_0_8_1">■ 0.8.1</a></h3> 335<h4>Added and Changed Features</h4> 336<ul style="list-style-type:none;"> 337<li><a href="#note_16-G03">Note 16-G03: (Library) Changed the various update processing methods of SceneUpdater to public</a></li> 338<li><a href="#note_16-G08">Note 16-G08: (Library) Changed the plan for abolishing <CODE>AnimFrameController::SetPlayPolicy(u8 loopMode)</CODE></a></li> 339</ul> 340<h4>Bug fixes</h4> 341<ul style="list-style-type:none;"> 342<li><a href="#note_16-G01">Note 16-G01: (Library) Fixed a bug where LayerId set by functions like SceneUpdater::SubmitView was not being correctly reflected</a></li> 343<li><a href="#note_16-G02">Note 16-G02: (Library) Fixed a bug where the LayerId of particles was not being correctly reflected</a></li> 344<li><a href="#note_16-G04">Note 16-G04: (Library) Fixed a bug where the ColorMask setting was invalid in the initialized state</a></li> 345<li><a href="#note_16-G05">Note 16-G05: (Library) Fixed a bug with overwriting particle GPU commands</a></li> 346<li><a href="#note_16-G06">Note 16-G06: (Library) Fixed a calculation mistake made when making a specification in terms of percent of child particle lifespan</a></li> 347<li><a href="#note_16-G07">Note 16-G07: (Library) Fixed a mistake in calculating sphere-shaped particle emitter lifespans</a></li> 348<li><a href="#note_16-G09">Note 16-G09: (Library) Fixed a bug with Step curve evaluation</a></li> 349<li><a href="#note_16-G10">Note 16-G10: (Library) Fixed a bug where the material stencil setting was not being correctly reflected</a></li> 350<li><a href="#note_16-G11">Note 16-G11: (Simple Actual Hardware Viewer) Fixed a bug where camera operations were impossible when using multiple cameras</a></li> 351<li><a href="#note_16-G12">Note 16-G12: (Simple Actual Hardware Viewer) Fixed a bug where parent-child bindings for cameras, lights and fogs were not being reflected</a></li> 352</ul> 353<h3><a href="#version_0_8_0">■ 0.8.0</a></h3> 354<h4>Added and Changed Features</h4> 355<ul style="list-style-type:none;"> 356<li><a href="#note_15-G01">Note 15-G01: (Library) Added a layer ID setting to models</a></li> 357<li><a href="#note_15-G02">Note 15-G02: (Library) Added support for changing the playback rate of frame format skeletal animations</a></li> 358<li><a href="#note_15-G03">Note 15-G03: (Library) Added reference argument versions of methods to the CalculatedTransform class</a></li> 359<li><a href="#note_15-G05">Note 15-G05: (Library) Added render priority to material priority render keys</a></li> 360<li><a href="#note_15-G06">Note 15-G06: (Library) Integrated animation updates into SceneUpdater</a></li> 361<li><a href="#note_15-G07">Note 15-G07: (Library) Cleaned up animation update timing</a></li> 362<li><a href="#note_15-G08">Note 15-G08: (Library) Improved verification of arguments to SceneNode::DetachChild</a></li> 363<li><a href="#note_15-G09">Note 15-G09: (Library) Added a rotation feature (directional) based on particle distance of motion</a></li> 364<li><a href="#note_15-G10">Note 15-G10: (Library) Changed the particle default shader</a></li> 365<li><a href="#note_15-G11">Note 15-G11: (Library) Added particle-related features</a></li> 366<li><a href="#note_15-G12">Note 15-G12: (Library) Added particle-related features</a></li> 367<li><a href="#note_15-G14">Note 15-G14: (Library) Changed class names from RenderEnvironment to SceneEnvironment</a></li> 368<li><a href="#note_15-G15">Note 15-G15: (Library) [Important] Added a feature for setting the scene environment</a></li> 369<li><a href="#note_15-G16">Note 15-G16: (Library) Added Builder to SkeletalModel</a></li> 370<li><a href="#note_15-G17">Note 15-G17: (Library) Added a feature for ignoring material settings</a></li> 371<li><a href="#note_15-G18">Note 15-G18: (Library) Corrected spelling mistakes in the API</a></li> 372<li><a href="#note_15-G19">Note 15-G19: (Library) Added a utility function for controlling the updater for the camera class</a></li> 373<li><a href="#note_15-G20">Note 15-G20: (Library) Added an interface for restoring status before animation playback</a></li> 374<li><a href="#note_15-G21">Note 15-G21: (Library) Made the user register start offset specifiable</a></li> 375<li><a href="#note_15-G22">Note 15-G22: (Library) Support for camera animations</a></li> 376<li><a href="#note_15-G24">Note 15-G24: (Library) Support for fog</a></li> 377<li><a href="#note_15-G25">Note 15-G25: (Library) Added the following methods to the GraphicsDevice class</a></li> 378<li><a href="#note_15-G26">Note 15-G26: (Library) Added the CallbackChain class and a class for calculating GPU processing time</a></li> 379<li><a href="#note_15-G27">Note 15-G27: (Library) The fog updater now supports w buffer</a></li> 380<li><a href="#note_15-G29">Note 15-G29: (Library) Added a render sort algorithm</a></li> 381<li><a href="#note_15-G30">Note 15-G30: (Library) Changed the binary format</a></li> 382<li><a href="#note_15-G31">Note 15-G31: (Library) Corrected a problem with billboards</a></li> 383<li><a href="#note_15-G32">Note 15-G32: (Library) Fixed a bug where visibility animations were sometimes not being correctly evaluated</a></li> 384<li><a href="#note_15-G33">Note 15-G33: (Shader) Changed the sphere environment map algorithm</a></li> 385<li><a href="#note_15-G34">Note 15-G34: (Shader) [Important] Changed the index order of the floating point constant registers for nwgfx_DefaultShader and nwgfx_ParticleDefaultShader</a></li> 386<li><a href="#note_15-G36">Note 15-G36: (Demo) Added a practical particle demo</a></li> 387<li><a href="#note_15-G37">Note 15-G37: (Demo) Changed the demo program pad</a></li> 388<li><a href="#note_15-G38">Note 15-G38: (Demo) Added a feature for controlling the demo program camera using the pad</a></li> 389<li><a href="#note_15-G39">Note 15-G39: (Demo) Added a user shader sample</a></li> 390<li><a href="#note_15-G40">Note 15-G40: (Converter) Specifications were changed so a warning is issued if the --auto_create_shader=on/off option is not included</a></li> 391<li><a href="#note_15-G42">Note 15-G42: (Simple Actual Hardware Viewer) Support for loading cameras and camera animations</a></li> 392<li><a href="#note_15-G43">Note 15-G43: (Simple Actual Hardware) Improved communication features</a></li> 393<li><a href="#note_15-G44">Note 15-G44: (Simple Actual Hardware Viewer) Added a feature for outputting file paths</a></li> 394</ul> 395<h4>Bug fixes</h4> 396<ul style="list-style-type:none;"> 397<li><a href="#note_15-G04">Note 15-G04: (Library) Fixed a bug where render priority was not being correctly reflected when creating depth priority render keys</a></li> 398<li><a href="#note_15-G13">Note 15-G13: (Library) Fixed a bug related to particles</a></li> 399<li><a href="#note_15-G23">Note 15-G23: (Library) Fixed a bug where a camera Twist and ViewRotate settings were being interpreted as degrees</a></li> 400<li><a href="#note_15-G28">Note 15-G28: (Library) Fixed a bug where Softimage format data whose scale values had changed were not being rendered correctly</a></li> 401<li><a href="#note_15-G35">Note 15-G35: (Demo) Fixed a bug where reflection of skeletal animation was being delayed by one frame</a></li> 402<li><a href="#note_15-G41">Note 15-G41: (Converter) Fixed a bug where conversion results were being handled incorrectly as "successful"</a></li> 403</ul> 404<h3><a href="#version_0_7_4">■ 0.7.4</a></h3> 405<h4>Bug fixes</h4> 406<ul style="list-style-type:none;"> 407<li><a href="#note_14-G01">Note 14-G01: (Library) Specifications have been changed so that unused texture units are disabled during rendering</a></li> 408</ul> 409<h3><a href="#version_0_7_2">■ 0.7.2</a></h3> 410<h4>Bug fixes</h4> 411<ul style="list-style-type:none;"> 412<li><a href="#note_12-G01">Note 12-G01: (Library) Fixed bug where internal vertex attributes were not being set correctly</a></li> 413<li><a href="#note_12-G02">Note 12-G02: (Library) Corrected calculations for textures and material hashes in the fragment lighting table</a></li> 414<li><a href="#note_12-G03">Note 12-G03: (Library) Fixed a bug where small version release builds would stop at runtime</a></li> 415</ul> 416<h3><a href="#version_0_7_1">■ 0.7.1</a></h3> 417<h4>Added and Changed Features</h4> 418<ul style="list-style-type:none;"> 419<li><a href="#note_11-G01">Note 11-G01: (Library) Changed specifications so that the particle double buffer is swapped explicitly by the API</a></li> 420<li><a href="#note_11-G04">Note 11-G04: (Library) Corrected a problem with cube maps</a></li> 421<li><a href="#note_11-G05">Note 11-G05: (Library) Added sample demos</a></li> 422<li><a href="#note_11-G06">Note 11-G06: (Library) Abolished LookupTableCache and added a lookup table cache structure that meets hardware specifications</a></li> 423<li><a href="#note_11-G07">Note 11-G07: (Library) Added utilities for textures and setting the VBO load location to ResGraphicsFile</a></li> 424<li><a href="#note_11-G08">Note 11-G08: (Library) Fixed a bug with LINEAR_MIPMAP_LINEAR</a></li> 425<li><a href="#note_11-G09">Note 11-G09: (Converter) Changed behavior when --auto_create_shader=on</a></li> 426<li><a href="#note_11-G10">Note 11-G10: (Library) Added a class for creating instances of ResSceneObject</a></li> 427<li><a href="#note_11-G11">Note 11-G11: (Documentation) Added a FAQ regarding gfx library particles</a></li> 428<li><a href="#note_11-G13">Note 11-G13: (Library) Added a GPU load meter to the demo library</a></li> 429</ul> 430<h4>Bug fixes</h4> 431<ul style="list-style-type:none;"> 432<li><a href="#note_11-G02">Note 11-G02: (Library) Fixed a bug with particle Y-axis billboards</a></li> 433<li><a href="#note_11-G03">Note 11-G03: (Library) Fixed shortcomings of particle-related API functions</a></li> 434<li><a href="#note_11-G12">Note 11-G12: (Library) Added a workaround for avoiding compile bugs with SceneTreeDemo</a></li> 435</ul> 436<h3><a href="#version_0_7_0">■ 0.7.0</a></h3> 437<h4>Added and Changed Features</h4> 438<ul style="list-style-type:none;"> 439<li><a href="#note_10-G01">Note 10-G01: (Library) Changed specifications so use of the command cache is enabled by default</a></li> 440<li><a href="#note_10-G02">Note 10-G02: (Library) With command cache support, C++ library operations on a PC have been changed to not supported</a></li> 441<li><a href="#note_10-G03">Note 10-G03: (Library) Specifications have changed so that RenderContext::ResetState does not call GX_BeforeRender(GX_LCD_TYPE_UP)</a></li> 442<li><a href="#note_10-G04">Note 10-G04: (Library) Optimized the material update process</a></li> 443<li><a href="#note_10-G05">Note 10-G05: (Library) Changed specifications so that lookup table setup is performed by ResLookupTable::Setup</a></li> 444<li><a href="#note_10-G06">Note 10-G06: (Library) Abolished the Shader class</a></li> 445<li><a href="#note_10-G07">Note 10-G07: (Library) Support for user-defined geometry shaders</a></li> 446<li><a href="#note_10-G10">Note 10-G10: (Demo) Stereo display support</a></li> 447<li><a href="#note_10-G11">Note 10-G11: (Demo) Changed the demo performance indicator</a></li> 448<li><a href="#note_10-G12">Note 10-G12: (Library) Added a post-rendering callback</a></li> 449<li><a href="#note_10-G13">Note 10-G13: (Library) Changed specifications so that even if SceneNode is destroyed its children are not destroyed</a></li> 450<li><a href="#note_10-G14">Note 10-G14: (Library) Changed specifications so the SceneNode destructor cancels one's registration for the parent and children</a></li> 451<li><a href="#note_10-G15">Note 10-G15: (Library) Changed the RenderState class to internal</a></li> 452<li><a href="#note_10-G16">Note 10-G16: (Library) Added a demo that uses only the bottom layer of graphics</a></li> 453<li><a href="#note_10-G17">Note 10-G17: (Library) Optimized render sorting</a></li> 454<li><a href="#note_10-G18">Note 10-G18: (Library) Support for texture pattern animations</a></li> 455<li><a href="#note_10-G19">Note 10-G19: (Library) Support for frame format skeletal animation data</a></li> 456<li><a href="#note_10-G20">Note 10-G20: (Library) Prohibited overwriting by getting references to FloatColor, VEC3, VEC2 and Rect resource class members</a></li> 457<li><a href="#note_10-G21">Note 10-G21: (Shader Binary Swap Script) Added a script for swapping the binary parts of shaders in existing intermediate files</a></li> 458<li><a href="#note_10-G22">Note 10-G22: (Shader) Changed swizzle inversion for vertex shaders</a></li> 459<li><a href="#note_10-G23">Note 10-G23: (Library) Added SceneInitializer and IMaterialIdGenerator</a></li> 460<li><a href="#note_10-G24">Note 10-G24: (Simple Actual Hardware Viewer) Added a reload feature and NWCS target preview feature</a></li> 461<li><a href="#note_10-G25">Note 10-G25: (Manual) Added descriptions to the reference manual</a></li> 462<li><a href="#note_10-G26">Note 10-G26: (Library) Added the DetachAllChildren method to the SceneNode class</a></li> 463<li><a href="#note_10-G27">Note 10-G27: (Simple Actual Hardware Viewer) Changed specifications so that the ULCD display is farther back in the screen</a></li> 464<li><a href="#note_10-G28">Note 10-G28: (Shader) Split the shader into a shader for particle rendering and a shader especially for particles</a></li> 465<li><a href="#note_10-G29">Note 10-G29: (Library) Added a user-defined updater to particle updaters</a></li> 466<li><a href="#note_10-G30">Note 10-G30: (Library) Added API functions for clearing particle collection</a></li> 467<li><a href="#note_10-G31">Note 10-G31: (Library) Replaced particle time controls with AnimFrameController</a></li> 468<li><a href="#note_10-G35">Note 10-G35: (Library) Added a depth buffer format to IRenderTarget::Builder</a></li> 469<li><a href="#note_10-G36">Note 10-G36: (Library) Added the RenderEnvironment class</a></li> 470<li><a href="#note_10-G38">Note 10-G38: (Library) Added an allocator setting to CommandCacheManager</a></li> 471<li><a href="#note_10-G39">Note 10-G39: (Library) Added a gl management region setting to the GISystem::SetGIShManager function</a></li> 472<li><a href="#note_10-G40">Note 10-G40: (Library) Abolished the swizzling restriction when coding custom shaders for the command cache</a></li> 473</ul> 474<h4>Bug fixes</h4> 475<ul style="list-style-type:none;"> 476<li><a href="#note_10-G08">Note 10-G08: (Library) Fixed a bug where the position of scaled bones was not being displayed correctly</a></li> 477<li><a href="#note_10-G09">Note 10-G09: (Library) Fixed a bug where animations with a negative value set for StartFrame could not be played</a></li> 478<li><a href="#note_10-G32">Note 10-G32: (Library) Fixed the bias in random numbers for particles</a></li> 479<li><a href="#note_10-G33">Note 10-G33: (Library) Fixed a bug in demos and other source code where models were not being displayed until fonts were displayed</a></li> 480<li><a href="#note_10-G34">Note 10-G34: (Converter) Corrected LUT scale value conversion</a></li> 481<li><a href="#note_10-G37">Note 10-G37: (Library) Revised the command setting for the light enable flag</a></li> 482</ul> 483<h3><a href="#version_0_6_0">■ 0.6.0</a></h3> 484<h4>Added and Changed Features</h4> 485<ul style="list-style-type:none;"> 486<li><a href="#note_07-G02">Note 07-G02: (Library_ Changed the name RenderingOrder to TranslucencyKind</a></li> 487<li><a href="#note_07-G03">Note 07-G03: (Library) Added priority to the arguments of RenderQueue::EnqueueCommand</a></li> 488<li><a href="#note_07-G05">Note 07-G05: (Library) Support for fragment light point lights and spotlights</a></li> 489<li><a href="#note_07-G06">Note 07-G06: (Library) Support for vertex lights</a></li> 490<li><a href="#note_07-G07">Note 07-G07: (Library) Changed specifications so that fogs can be enabled/disabled per material</a></li> 491<li><a href="#note_07-G08">Note 07-G08: (Library) Changed names from maestro table to lookup table</a></li> 492<li><a href="#note_07-G09">Note 07-G09: (Library) Added lookup table sets</a></li> 493<li><a href="#note_07-G10">Note 07-G10: (Library) Added a macro for measuring the process load in the library</a></li> 494<li><a href="#note_07-G11">Note 07-G11: (Demo) Support for load measurements split between the CPU and GPU in demos</a></li> 495<li><a href="#note_07-G12">Note 07-G12: (Library) Changed specifications so that projection map matrices are calculated by CameraProjectionUpdater</a></li> 496<li><a href="#note_07-G13">Note 07-G13: (Library) Changed animation resources to a list by type</a></li> 497<li><a href="#note_07-G14">Note 07-G14: (Library) Changed skeleton calculations so that world coordinates or model coordinates can be selected</a></li> 498<li><a href="#note_07-G16">Note 07-G16: (Library) Made particles faster</a></li> 499<li><a href="#note_07-G17">Note 07-G17: (Library) Cleaned up particle-related API functions and member variables</a></li> 500<li><a href="#note_07-G18">Note 07-G18: (Simple GraphicsViewer) Support for particles</a></li> 501<li><a href="#note_07-G19">Note 07-G19: (Library) Support for models and mesh visibility animation</a></li> 502<li><a href="#note_07-G20">Note 07-G20: (Library) Changed code for converting from lookup table curves to tables</a></li> 503</ul> 504<h4>Bug fixes</h4> 505<ul style="list-style-type:none;"> 506<li><a href="#note_07-G01">Note 07-G01: (Library) Fixed a bug where sorting of meshes in the same model was not being performed correctly for Z sort</a></li> 507<li><a href="#note_07-G04">Note 07-G04: (Library) Fixed a bug where cube maps and sphere maps could not be displayed correctly</a></li> 508<li><a href="#note_07-G15">Note 07-G15: (Library) Fixed a bug related to particles</a></li> 509</ul> 510<h3><a href="#version_0_5_1">■ 0.5.1</a></h3> 511<h4>Bug fixes</h4> 512<ul style="list-style-type:none;"> 513<li><a href="#note_06-G01">Note 06-G01: (Library) Revised the constructor argument MoveArray when dynamically allocating memory</a></li> 514<li><a href="#note_06-G02">Note 06-G02: (Library) Fixed a bug where fragment light point light sources were parallel light sources</a></li> 515<li><a href="#note_06-G03">Note 06-G03: (Library) Fixed the formula for calculating the camera view clip mid-point</a></li> 516<li><a href="#note_06-G04">Note 06-G04: (Library) Fixed a bug where the display was not correct if the quantization option for vertex attributes was other than a float</a></li> 517<li><a href="#note_06-G05">Note 06-G05: (Library) Fixed bugs related to particles</a></li> 518</ul> 519<h3><a href="#version_0_5_0">■ 0.5.0</a></h3> 520<h4>Added and Changed Features</h4> 521<ul style="list-style-type:none;"> 522<li><a href="#note_05-G04">Note 05-G04: (Library) Changed the function for configuring the camera updater</a></li> 523<li><a href="#note_05-G05">Note 05-G05: (Library) Added a render queue</a></li> 524<li><a href="#note_05-G06">Note 05-G06: (Library) Added hemispherical lighting</a></li> 525<li><a href="#note_05-G07">Note 05-G07: (Library) Support for loading cameras from resources</a></li> 526<li><a href="#note_05-G08">Note 05-G08: (Library) Changed the name of some classes</a></li> 527<li><a href="#note_05-G09">Note 05-G09: (Library) Changed specifications for callbacks</a></li> 528<li><a href="#note_05-G10">Note 05-G10: (Library) Added particle feature support</a></li> 529<li><a href="#note_05-G11">Note 05-G11: (Demo) Changed specifications so that demo resources are created with omake</a></li> 530<li><a href="#note_05-G12">Note 05-G12: (Demo) Added a resource demo</a></li> 531<li><a href="#note_05-G13">Note 05-G13: (Library) Added ASSERT for texture formats not supported by TEG</a></li> 532<li><a href="#note_05-G14">Note 05-G14: (Library) Added vertex color scale to material color</a></li> 533</ul> 534<h4>Bug fixes</h4> 535<ul style="list-style-type:none;"> 536<li><a href="#note_05-G01">Note 05-G01: (Library) Corrected a problem with animations</a></li> 537<li><a href="#note_05-G02">Note 05-G02: (Library) Fixed bugs related to particles</a></li> 538<li><a href="#note_05-G03">Note 05-G03: (Library) Fixed bugs with fogs</a></li> 539</ul> 540<h3><a href="#version_0_4_1">■ 0.4.1</a></h3> 541<h4>Added and Changed Features</h4> 542<ul style="list-style-type:none;"> 543<li><a href="#note_04-G01">Note 04-G01: (Library) Fixed a memory resource leak</a></li> 544<li><a href="#note_04-G02">Note 04-G02: (Library) Renamed the ResPixelBasedTexture::GetType and ResShaderParameterValue::GetType functions</a></li> 545<li><a href="#note_04-G03">Note 04-G03: (Library) Changed the binary format of ResMaestroTable</a></li> 546<li><a href="#note_04-G04">Note 04-G04: (Simple GraphicsViewer) Support for material animations</a></li> 547</ul> 548<h3><a href="#version_0_4_0">■ 0.4.0</a></h3> 549<h4>Added and Changed Features</h4> 550<ul style="list-style-type:none;"> 551<li><a href="#note_03-G01">Note 03-G01: (Library) Added support for TS version PODs</a></li> 552<li><a href="#note_03-G02">Note 03-G02: (Library) Added support for particles</a></li> 553<li><a href="#note_03-G03">Note 03-G03: (Library) Added support for user shaders</a></li> 554<li><a href="#note_03-G04">Note 03-G04: (Library) Added a feature for selecting the memory location for textures and vertex objects</a></li> 555<li><a href="#note_03-G05">Note 03-G05: (Library) Expanded the scene tree</a></li> 556<li><a href="#note_03-G06">Note 03-G06: (Library) Expanded materials</a></li> 557<li><a href="#note_03-G07">Note 03-G07: (Library) Added support for material animations</a></li> 558</ul> 559<h3><a href="#version_0_2_1">■ 0.2.1</a></h3> 560<h4>Added and Changed Features</h4> 561<ul style="list-style-type:none;"> 562<li><a href="#note_01-G01">Note 01-G01: (Library) Support for actual hardware (TEG2)</a></li> 563<li><a href="#note_01-G02">Note 01-G02: (Library) Added a simple graphics viewer</li> 564<li><a href="#note_01-G03">Note 01-G03: (Library) Expanded the scene tree</a></li> 565</ul> 566 567 568<h2 id="version_1_2_16">Changes in 1.2.16</h2> 569<h3 id="note_38-G01">Note 38-G01: (Demo) Fixed a bug related to multi-textures created by ProjectionShadowDemo and ShadowMapDemo</h3> 570<p>There was a problem with ProjectionShadoDemo and ShadowMapDemo where the demo would stop if the camera was pointed in a particular direction. 571</p> 572<p>This was due to a problem with multi-texture processing that would cause a problem with the GPU. This problem could occur when the GPU entered a wait state in cases where the processing load associated with each multi-texture was uneven. 573</p> 574<p>To alleviate this problem, adjustments were made to make the processing load of shadow textures even by making filter settings and mipmap settings linear versus the floor texture used by ProjectionShadowDemo and ShadowMapDemo. 575</p> 576<h2 id="version_1_2_14">■ Changes in 1.2.14</h2> 577<h3 id="note_36-G01">Note 36-G01: (Library) Fixed problem in rendering that occurred after switching from a geometry shader to a vertex shader</h3> 578<p>Previously, there was a bug that caused incorrect rendering in certain circumstances. If you created your own geometry shader and set it for a material, and the color and texture coordinate settings of the next-rendered material (not using this geometry shader) were identical to the settings of the first material, it would not be rendered correctly. 579</p> 580<p>Behavior has been revised so that now, when rendering switches from a geometry shader to a vertex shader, the <CODE>ShaderProgram::ActivateShaderProgram</CODE> function correctly re-sets the shader uniforms. 581</p> 582<p>In previous versions of the library it was necessary to work around this bug by setting the hash values of the next-rendered material to <CODE>0</CODE>, but with this fix that workaround is no longer necessary. 583</p> 584<h2 id="version_1_2_13">■ Changes in 1.2.13</h2> 585<h3 id="note_35-G01">Note 35-G01: (Library) Fixed problem that prevented configuration of lookup tables for dynamically generated fragment lights</h3> 586<p>Fixed bug that caused an assertion failure to occur when lookup tables were configured for fragment lights created by DynamicBuilder. 587</p> 588<h2 id="version_1_2_7">■ Changes in 1.2.7</h2> 589<h3 id="note_29-G01">Note 29-G01: (Library) Fixed problem with irregular replay of quantized animation.</h3> 590<p>When an animation curve comprised of multiple segments was quantized, gaps would sometimes open up between the segments. When such an animation was played, sometimes access violations and other problems would arise. This was fixed by treating any gap between segments as the starting frame of the next segment. 591</p> 592<h2 id="version_1_2_1">■ Changes in 1.2.1</h2> 593<h3 id="note_23-G01">Note 23-G01: (Library) Fixed problem of VertexColorScale being set to 1 by SetAmbient of ResMaterialColor</h3> 594<p>A bug caused VertexColorScale to be set to 1 when Color was configured by SetAmbient of ResMaterialColor. Revisions were made so VertexColorScale no longer changes. 595</p> 596<h3 id="note_23-G02">Note 23-G02: (Library) Fixed compile error with the <CODE>Signal </CODE>class <CODE>GetMemorySizeForFixedSizedSignal</CODE> function</h3> 597<p>A compile error would happen when the <CODE>Signal </CODE>class <CODE>GetMemorySizeForFixedSizedSignal</CODE> function was called. That problem has been fixed. 598</p> 599<h3 id="note_23-G03">Note 23-G03: (Library) Deleted ASSERT for checking texture 32MB boundary in FCRAM</h3> 600<p>An ASSERT was inserted to make sure textures did not straddle a 32MB boundary as a restriction in the old hardware, but that item has now been deleted as an ASSERT condition. 601</p> 602<h3 id="note_23-G04">Note 23-G04: (Library) Fixed a bug where the GPU would possibly stall due to failed invalidation of the vertex load array</h3> 603<p>There was a possibility that the GPU would stall because invalidation of the vertex load array, added in version 1.2.0, did not work correctly. Sometimes vertex data would become corrupted and the GPU would stall, if an attempt was made to render a mesh with a total number of VertexAttributes less than the number of VertexStream objects of the previous mesh after rendering a mesh with a large number of VertexStream objects. This bug has been fixed. A correction was made in version 1.2.0.4, but there were still cases where vertex data corruption could not be completely prevented, so additional measures were taken. 604</p> 605<h3 id="note_23-G05">Note 23-G05: (Library) <CODE>ShaderParameter </CODE>is now invariably set when <CODE>ShaderProgram </CODE>has been changed</h3> 606<p>When the User Shader was being used, sometimes materials without a configured <B>ShaderParameter </B> would render incorrectly. To correct for this, <B>ShaderParameter</B> is now invariably set when <B>ShaderProgram</B> has been changed. 607</p> 608<h2 id="version_1_2_0">■ Changes in 1.2.0</h2> 609<h3 id="note_22-G01">Note 22-G01: (Library) Changed the implementation so the library does not allocate memory using size 0</h3> 610<p>The implementation has been revised in locations where memory was being allocated for size 0 within the library. 611</p> 612<h3 id="note_22-G02">Note 22-G02: (Library) Added BranchVisible for preventing rendering below one's own node in the scene tree</h3> 613<p>BranchVisible was added for preventing rendering below one's own node in the scene tree. When canceling rendering below a particular node in the scene tree, this function can be used to easily cancel rendering. 614</p> 615<h3 id="note_22-G03">Note 22-G03: (Library) Added a function for finding the size of memory required for some scene node and animation-related classes</h3> 616<p>A function for returning the required memory size when creating some scene node and animation-related classes has been added. High-speed instance creation and destruction is possible by allocating the memory size returned by this function and distributing memory to high-speed heaps such as the frame heap. For details, see the documentation on the GetMemorySize and GetDeviceMemorySize function in the Builder class. 617</p> 618<h3 id="note_22-G04">Note 22-G04: (Library) Added a function allowing specification of the states that can be cleared by ResetState</h3> 619<p>A function allowing specification of the states that can be cleared by ResetState has been added. 620</p> 621<h3 id="note_22-G05">Note 22-G05: (Library) Added ParticleMaterialActivator for setting materials for particles</h3> 622<p>ParticleMaterialActivator for making minimal material settings for particles has been added. Materials are automatically selected from RenderContext based on material flags. The processing cost of material settings that are not used by particles, such as lights, can be reduced by using this class. For details, see graphics documentation, and the features for particle and rendering processes. 623</p> 624<h3 id="note_22-G06">Note 22-G06: (Library) Fixed a bug where NULL was being set for AnimInterpolator by ReplaceAnimObject</h3> 625<p>There was a bug where abnormal blend results would result if NULL was set for an animation object by ReplaceAnimObject for AnimInterpolator without ensuring the integrity of weight calculations and blending. This has been fixed. If NULL is set, behavior is now the same as when an animation object without any animation members has been set in that index. 626</p> 627<h3 id="note_22-G07">Note 22-G07: (Library) Fixed a bug where billboards that include scaling were not being calculated correctly</h3> 628<p>A bug has been fixed when billboards include scaling where scaling was being repeatedly applied each time UpdateView was repeated. 629</p> 630<h3 id="note_22-G08">Note 22-G08: (Library) Revised the initial Transform when dynamically creating nodes, cameras, lights, or fogs</h3> 631<p>The initial transform scale when dynamically creating nodes, cameras, lights, or fogs has been changed to 1.0f. 632</p> 633<p>A bug has been fixed when billboards include scaling where scaling was being repeatedly applied each time UpdateView was repeated. 634</p> 635<h3 id="note_22-G09">Note 22-G09: (Library) Plans to revise particles in 1.3</h3> 636<p>Several changes have not been adopted as standard for compatibility between version 1.2 and 1.1. These changes can be introduced by disabling #define NW_GFX_PARTICLE_COMPAT_1_1 in gfx_Config.h. 637</p> 638<p>LIFE, BIRTH, and NEG_TIMELIMIT for streams are handled using ParticleTime. This is the same as f32 if NW_GFX_PARTICLE_COMPAT_1_1 is enabled. Under version 1.3, a fixed point number consisting of sign plus 23-bit integer part plus 8-bit fractional part will be used. 639</p> 640<p>NEG_TIMELIMIT will be abolished. Lifespan will be determined based on calculation using LIFE and BIRTH. To delete a particle, use ParticleCollection::KillParticle rather than using NEG_TIMELIMIT stream operations. 641</p> 642<p>Work memory will no longer be used for emissions from emitters or child emissions. At present, after position information is created in a temporary buffer, it is actually applied to the stream, but is directly written to the stream. Several non-disclosed functions such as ParticleSet::AddParticles have been changed. Do not use these functions in applications because work memory for ParticleContext will not be allocated. 643</p> 644<h3 id="note_22-G10">Note 22-G10: (Library) Changed the list of ResParticleInitializer/Updater TargetStreams to a single value</h3> 645<p>Although a list was being used for ParticleInitializer/Updater TargetStreams, this has been changed to store only a single value because only the topmost value could be obtained. 646</p> 647<p>ResParticleInitializer::GetTargetStreamsCount ResParticleInitializer::GetTargetStreams ResParticleUpdater::GetTargetStreamsCount ResParticleUpdater::GetTargetStreams 648</p> 649<p>have been abolished. 650</p> 651<p>Instead, use GetTargetStream. This function returns a negative value if the stream does not have a valid value. 652</p> 653<h3 id="note_22-G11">Note 22-G11: (Library) Changed velocity-initial velocity "randomize specified direction"</h3> 654<p>A bug was fixed where the wrong shape would result depending on the direction. 655</p> 656<h3 id="note_22-G12">Note 22-G12: (Library) Added API functions for controlling particles</h3> 657<p>ParticleCollection::KillParticle removes the particle having the specified index. 658</p> 659<p>ParticleCollection::SetLifeParameter sets the PARTICLEUSAGE_LIFE parameter. 660</p> 661<h3 id="note_22-G13">Note 22-G13: (Library) Changed memory allocator selection for particles</h3> 662<p>Specifications have changed. Some memory required for particles was being obtained from device memory, but is now obtained from the main allocator. 663</p> 664<h3 id="note_22-G14">Note 22-G14: (Library) Revised blend weight normalization of AnimInterpolator</h3> 665<p>Blend weight for each pass when using SetWeight has have been normalized under 1.1.0. With this change, normalization is performed only once during the first animation blend performed after execution of SetWeight. 666</p> 667<h3 id="note_22-G15">Note 22-G15: (Library) Added a mode where blend weights fo AnimInterpolator are not normalized</h3> 668<p>A mode has been added for performing blending using the specified blend weights as-is without normalizing them. This allows the normalization process to be eliminated. For details, see AnimInterpolator::SetNormalizationEnabled. 669</p> 670<h3 id="note_22-G16">Note 22-G16: (Library) Added a validity check to the Builder class for animation-related classes</h3> 671<p>An ASSERT is made if Builder class settings are illegal. There is no effect from this under the normal method of use. 672</p> 673<h3 id="note_22-G17">Note 22-G17: (Library) Changed specifications so that textures, vertices, and vertex index images are gathered together in a contiguous area in a file and then output</h3> 674<p>Specifications have changed so that data images directly accessed by the GPU (textures, vertices, and vertex indices) are collected together in a contiguous area of a file and then output. There has been no change to the resource access method. However, the ResGraphicsFile::GetImageBlockData and ResGraphicsFile::GetImageBlockDataSize functions can be used to access image information in one big pile. 675</p> 676<h3 id="note_22-G18">Note 22-G18: (Library) Changed specification so bounding information can be added at the vertex index level [Experimental Specification]</h3> 677<p>It is now possible to add bounding information at the index stream level in intermediate files. With this change, index stream bounding information can also be included in binaries, as long as bounding information for the index stream exists in the intermediate file, by specifying the option --index_stream_bounding during binary conversion. This implementation is currently experimental, and its method of use may change in the future. 678</p> 679<h3 id="note_22-G19">Note 22-G19: (Library) Changed specifications so that glBindFramebuffer(NULL) is not executed when NULL has been specified to the RenderContext::SetRenderTarget function</h3> 680<p>Although glBindFramebuffer(NULL) used to be executed erroneously in the gfx library when NULL was specified to the RenderContext::SetRenderTarget function, specifications have changed so that gl functions are not executed. 681</p> 682<h3 id="note_22-G20">Note 22-G20: (Library) Added an ASSER when texture images cross 32MB boundaries</h3> 683<p>An ASSERT has been added because the GPU will not function normally when texture images cross 32MB boundaries. 684</p> 685<h3 id="note_22-G21">Note 22-G21: (Library) Inverted the method of creating fog ZFlip and fog tables</h3> 686<p>A bug was fixed where the direction of creating ZFlip settings for fogs fog tables were both being created in reverse. Although there is no change in behavior, note that ZFlip must be inverted when directly manipulating a fog table from within an application. 687</p> 688<h3 id="note_22-G22">Note 22-G22: (Library) Fixed a bug where all lights would go out when NW_GFX_VERTEX_LIGHT_ENABLED was disabled</h3> 689<p>A but was fixed where all lights would go out, including fragment lights, when NW_GFX_VERTEX_LIGHT_ENABLED was disabled. 690</p> 691<h3 id="note_22-G23">Note 22-G23: (Library) Changed specifications so that DefaultShaderAutoSelector is applied only to DefaultShader</h3> 692<p>Specifications were changed so that DefaultShaderAutoSelector is applied only to materials that reference the shader named DefaultShader. 693</p> 694<h3 id="note_22-G24">Note 22-G24: (Library) Fixed a bug where evaluation values beyond the end of a curve were incorrect under particular conditions when using visibility animations</h3> 695<p>A bug was fixed where the last key set for a curve was being ignored when finding evaluation values beyond the end of that curve when the last key was set in a fractional frame 696</p> 697<h3 id="note_22-G25">Note 22-G25: (Library) Added a feature for disabling the key cache used for render sorting at the mesh level</h3> 698<p>A bit flag named ResMesh::FLAG_VALID_RENDER_KEY_CACHE was added to mesh flags (GetFlags() method). 699</p> 700<p>If the feature for caching keys for render sorting (see RenderQueue::Reset) has been enabled, the key cache can be re-created when Enqueue is executed by setting ResMesh::FLAG_VALID_RENDER_KEY_CACHE to 0. 701</p> 702<p>A utility (Model::InvalidateRenderKeyCache) for disabling the cache at the model level has also been added. 703</p> 704<h3 id="note_22-G26">Note 22-G26: (Library) Optimized vertex attributes for the GPU</h3> 705<p>Up to this release, fixed values were set as fixed vertex attributes for vertex attributes that do not exist in resources each time Draw was executed. In this release, however, command volume for setting vertices has been optimized by issuing commands that disable vertex streams that must be used after issuing the Draw command. If the RenderContext::ResetState function is executed, and the geometry shader is switched from a valid shader to an invalid shader, all vertex attributes are cleared after Draw is executed. 706</p> 707<h3 id="note_22-G27">Note 22-G27: (Library) Added methods to the demo particle class</h3> 708<p>Features used frequently during particle processing have been added as methods to the new::demo::ParticleEffect and nw::demo::ParticleNode classes. In addition, several particle demos have been changed to use the above classes. 709</p> 710<h3 id="note_22-G28">Note 22-G28: (Library) Added an option for changing the blending method if an animation member does not exist when using AnimInterpolator or TransformAnimInterpolator</h3> 711<p>The option IgnoreNoAnimMember has been added so that animation members to be blended that do not exist in AnimInterpolator or TransformAnimInterpolator are ignored and excluded from weight normalization. 712</p> 713<p>This behavior is the same as that prior to 1.1.0 and the same as that when true is specified for IsOldMethod. Also, note that IgnoreNoAnimMember and IsOldMethod share the same flag. 714</p> 715<p>The IsOldMethodOption will be removed in 1.3.0. 716</p> 717<h3 id="note_22-G29">Note 22-G29: (Library) Fixed a bug where the hash values in the ShadingParameter and FragmentLightingTable were wrong</h3> 718<p>A bug was fixed where certain processes were not being skipped correctly because the hash values in ShadingParameter and FragmentLightingTable were wrong. 719</p> 720<h3 id="note_22-G30">Note 22-G30: (Library) Fixed a bug where Reset for model visibility animations was not working</h3> 721<p>A bug was fixed where Reset for model visibility animations was not working. The IsVisible flag on the resource side was also being overwritten erroneously during animation playback. Under correct operations, only the IsVisible flag on the instance side is changed. 722</p> 723<h3 id="note_22-G31">Note 22-G31: (Library) Fixed a problem where the framebuffer was not being correctly released by OnScreenBuffer</h3> 724<p>A bug was fixed where the framebuffer was not being released after the OnScreenBuffer class would close. 725</p> 726<h3 id="note_22-G32">Note 22-G32: (Library) Fixed a bug where original uniform definitions were being added by custom shaders</h3> 727<p>Beginning from release 1.1.0, there was a bug where the GetLocation function in the ResShaderSymbol class was not returning the right value if a custom shader was created and original uniform definitions has been added. Data including the custom shader was therefore not being displayed normally. This bug has been fixed. 728</p> 729<h3 id="note_22-G33">Note 22-G33: (Library) Integrated TextureLocationFlagSetter, IndexStreamLocationFlagSetter, and VertexStreamLocationFlagSetter</h3> 730<p>TextureLocationFlagSetter, IndexStreamLocationFlagSetter, and VertexStreamLocationFlagSetter (representing a utility class for specifying the memory location of the texture buffer and vertex buffer when using Foreach* functions) have been integrated and collected together in LocationFlagSetter. For compatibility, the original class name remains as a typedef in the LocationFlagSetter class. 731</p> 732<h3 id="note_22-G34">Note 22-G34: (Demo) Changed specifications so that the buffer is cleared beginning from the farthest model rather than using glClear</h3> 733<p>To reduce the process load, the method for clearing the buffer has been changed from using glClear to a method that uses the most distant model. glClear is used as usual in LowLayer demos. 734</p> 735<h3 id="note_22-G35">Note 22-G35: (Demo) Added ParticleScaleDemo</h3> 736<p>This demo can be used to find out the effect of applying scaling to ParticleModel, ParticleEmitter, or Particle objects, respectively. 737</p> 738<h3 id="note_22-G36">Note 22-G36: (Demo) Changed the use of the demo particle class and demo contents used in particle demos</h3> 739<p>ParticleApplicationDemo, ParticleCtrlEmissionDemo, ParticleRecycleDemo, and ParticleChokeDemo have been changed to use the nw::demo::ParticleEffect and nw::demo::ParticleNode classes. Demo contents have also been reviewed and changed. 740</p> 741<h3 id="note_22-G37">Note 22-G37: (Demo) Changed the location of data for demos</h3> 742<p>The location of data used in demos has been changed. 743</p> 744<h3 id="note_22-G38">Note 22-G38: (Converter) Fixed a problem with vertex index data alignment</h3> 745<p>The alignment of vertex index data was not being handled correctly. This bug has been fixed. 746</p> 747<h3 id="note_22-G39">Note 22-G39: (Converter) Fixed a bug where binary conversion would fail outside the Japanese and English language environments such as when using French or German</h3> 748<p>For English version, changed so that the English (en_US) version operates properly regardless of the use region settings. 749</p> 750<h3 id="note_22-G40">Note 22-G40: (Viewer) Abolished the simple actual hardware Viewer</h3> 751<p>The simple actual hardware Viewer has been abolished. From now on, be sure to use the official version of the Viewer released in 1.1.0 as the tool used to preview graphics data on actual hardware. 752</p> 753<h2 id="version_1_1_0">■ Changes in 1.1.0</h2> 754<h3 id="note_19-G01">Note 19-G01: (Library)【Important】 Changed specifications so that gl texture objects and vertex buffer objects are not created by texture data or vertex data</h3> 755<p>Specifications have changed so that a gl function is not used when texture data or vertex data is transferred to VRAM, and neither texture objects nor vertex buffer objects are created. 756</p> 757<h3 id="note_19-G02">Note 19-G02: (Library)[Important] Added the SetLocationAddress function for directly specifying the texture data or vertex data address</h3> 758<p>The SetLocationAddress and GetLocationAddress functions have been added to the resource class in order to use texture data or vertex data located at any address. APIs have been added to the following classes. 759</p> 760<ul><li>ResPixelBasedImage 761</li> 762<li>ResImageTexture 763</li> 764<li>ResCubeTexture 765</li> 766<li>ResShadowTexture 767</li> 768<li>ResVertexStreamBase 769</li> 770<li>ResIndexStream 771</li> 772</ul> 773<p>The address must be set before invoking Setup. 774</p> 775<h3 id="note_19-G03">Note 19-G03: (Library)[Important] Added the FrameBufferObject class</h3> 776<p>The FrameBufferObject class has been added for managing the address, size, and format of the frame buffer. The type of the return value from the IRenderTarget::GetBufferObject function has been changed from GLuint to FrameBufferObject. 777</p> 778<h3 id="note_19-G04">Note 19-G04: (Library)[Important] Revised specifications so that gl functions are not used for frame buffer settings</h3> 779<p>Specifications have been revised so that gl functions are not used when setting the frame buffer GPU. The frame buffer color buffer address and depth buffer address can now be specified directly. 780</p> 781<p>With this revision, you must always execute glBindFramebuffer within applications when rendering using gl functions. Either execute glBindFramebuffer even when using glClear, or use the nw::gfx::FrameBufferObject::ClearBuffer function rather than glClear. 782</p> 783<h3 id="note_19-G05">Note 19-G05: (Library)[Important] Support for vertex interleave format</h3> 784<p>Vertex arrays can now be represented using an interleave format. Since vertex arrays are interleaved by default during binary conversion from intermediate files, be sure to use the --force_separate_attribute option of the converter to export in a separate format. 785</p> 786<h3 id="note_19-G06">Note 19-G06: (Library)[Important] Changed RenderTarget width and height specifications</h3> 787<p>OnScreenBuffer used to be generated with width and height of the render buffer reversed. Now it is generated as a vertical buffer similar to the actual size. 788</p> 789<p>Because the width and height of the RenderTarget up to now were reversed, parts of code used to reverse these parameters for the Viewport as well have also been changed. Width and height are now used as-is even with the Viewport. 790</p> 791<p>Code that uses IRenderTarget must be revised as follows. 792</p> 793<ul><li> Revise so that width and height are reversed when creating OnScreenBuffer 794</li> 795<li> Revise so that the obtained width and height of OnScreenBuffer are reversed 796</li> 797</ul> 798<pre> (For example, parts of code where the aspect ratio is found based on the buffer width and height.) 799</pre> 800<p>The basic principle is to avoid having the gfx library correct the screen orientation. Note, however, that the demo library has been created assuming that the screen is wider than tall. 801</p> 802<h3 id="note_19-G07">Note 19-G07: (Library)[Important] Changed specifications so NULL is returned when memory allocation for a particle-related class fails</h3> 803<p>Specifications have changed so that NULL is returned when memory allocation fails for ParticleModel, ParticleEmitter, or ParticleSet. A NULL check must be performed on instances created by applications. 804</p> 805<h3 id="note_19-G08">Note 19-G08: (Library)[Important] Changed the light direction used for rendering from Direction of the ResLight class to Direction of the Light class</h3> 806<p>For optimization, specifications have changed so that the light direction is calculated first by SceneUpdater and then Direction of the Light class is copied. When changing the light direction, pay attention to the following points. 807</p> 808<p>Parent node rotation is calculated or copied according to the inheritance flag from m_Direction of the ResLight class by the SceneUpdater function. Use ResLight::SetDirection if Direction is changed before executing SceneUpdater, or change Light::Direction after executing SceneUpdater. 809</p> 810<h3 id="note_19-G09">Note 19-G09: (Library)[Important] Split the SceneEnvironment-related BufferOption off of ShadingParameter</h3> 811<p>Specifications have changed so that LightSetIndex and FogIndex parameter buffers, previously created using FLAG_BUFFER_SHADER_PARAMETER, are now created using FLAG_BUFFER_SCENE_ENVIRONMENT. When using these parameter buffers, be sure to created the buffer while specifying FLAG_BUFFER_SCENE_ENVIRONMENT. 812</p> 813<h3 id="note_19-G10">Note 19-G10: (Library)[Important] Changed the timing at which the callback function is called after the WorldMatrix is calculated</h3> 814<p>Although a callback was not previously called when using the feature (FLAG_IS_WORLDMATRIX_CALCULATION_ENABLED) for skipping calculations, specifications have changed so that a callback is now always called. 815</p> 816<h3 id="note_19-G11">Note 19-G11: (Library)[Important] Changed specifications so that MaterialIdGenerator is no longer automatically created by SceneInitializer</h3> 817<p>Although MaterialIdGenerator was always created automatically within SceneInitializer in the past, specifications have been revised so that it is not created automatically. Either use SortingMaterialIdGenerator when creating SceneInitializer or set an independently created MaterialIdGenerator. 818</p> 819<h3 id="note_19-G12">Note 19-G12: (Library)[Important] Changed the AnimFrameController user data to non-const type</h3> 820<p>AnimFrameController user data used to be const void* type, but has been changed to void* type. With this change, the constructor for AnimFrameController has also changed. 821</p> 822<h3 id="note_19-G13">Note 19-G13: (Library)[Important] Fixed a bug with the ResTextureCombiner::Combine definition</h3> 823<p>Among definitions in the ResTextureCombiner::Combine class, the definitions of COMBINE_ADD_MULT and COMBINE_MULT_ADD were reversed. Since this bug has been fixed, unlike previous versions, SetCombineRgb and SetCombineAlpha in the RestTextureCombiner class will now result in correct behavior. 824</p> 825<h3 id="note_19-G14">Note 19-G14: (Library)[Important] Revised SafeDestroyBranchAll</h3> 826<p>A bug was fixed where SafeDestroyBranchAll was calling SafeDestroy rather than SafeBranchDestroy. 827</p> 828<h3 id="note_19-G15">Note 19-G15: (Library)[Important] Moved SceneEnvironment::SetActiveCamera to RenderContext::SetActiveCamera</h3> 829<p>The SetActiveCamera, GetActiveCamera, and GetActiveCameraIndex members of the SceneEnvironment class have been moved to RenderContext. In addition, specifications have changed so that the WScale setting for the render state, previously carried out by RenderContext::SetCameraMatrix, is now handled by SetActiveCamera. Before rendering, be absolutely sure to call RenderContext::SetActiveCamera and then set the camera to use for lighting calculations. 830</p> 831<h3 id="note_19-G16">Note 19-G16: (Library)[Important] Abolished the both face culling setting ResRasterization::CULLINGMODE_ALL</h3> 832<p>Although not supported as a both face culling setting up to this version, this has been officially abolished and unsupported because it is not supported by hardware. 833</p> 834<h3 id="note_19-G17">Note 19-G17: (Library)[Important] Abolished the creation of OpenGL program objects</h3> 835<p>Up to this version, it was possible to set up an OpenGL program object when setting pu a shader, without actually using it, but this has been changed so that program objects can no longer be created. If a GL program object is required, either perform gl setup automatically, or rebuild the library with NW_GFX_PROGRAM_OBJECT_ENABLED enabled in gfx_Config.h. 836</p> 837<h3 id="note_19-G18">Note 19-G18: (Library) Added a feature for creating nodes that cannot be animated for improved performance</h3> 838<p>Although all nodes could be animated up to this version, an option for disabling animation at time of node creation has been added. This improves performance when updating nodes that are not animated. For details, see SceneBuilder::IsAnimationEnabled, SkeletalModel::Builder::IsAnimationEnabled, and so on. 839</p> 840<h3 id="note_19-G19">Note 19-G19: (Library) Fixed a bug in line with specification changes to AnimInterpolator and TransformAnimInterpolator</h3> 841<p>There was a bug where blending of unmatched members was not carried out correctly when blending animations whose members did not match using AnimInterpolator or TransformAnimInterpolator. This bug has been fixed. Performance has been improved with this fix. 842</p> 843<p>An option for restoring prior behavior has also been added. For details, see documentation on the AnimInterpolator::Builder::IsOldMethod option. 844</p> 845<h3 id="note_19-G20">Note 19-G20: (Library) Changed the implementation of SortingMaterialIdGenerator</h3> 846<p>Although sorting up to this version used to be carried out by referencing ResMaterialData only, implementation has changed so that sorting is now performed in the order ResMaterialData, ResBinaryShaderData, and ResFragmentLightingTableHash. 847</p> 848<h3 id="note_19-G21">Note 19-G21: (Library) Abolished the SetSampler member of the ResTextureMapper class and added a separate parameter accessor</h3> 849<p>Although it used to be necessary to call SetSampler when setting a sampler value for TextureMapper, this has been abolished and a separate variable accessor has been to the ResTextureSample class. With this change, the following parameters can now be changed dynamically. 850</p> 851<p>Minimization and magnification filters (MinFilter, MagFilter); Border color (BorderColor); Repeat method (WrapS, WrapT); Minimum LOD (MinLod); and LOD bias value (LodBias) 852</p> 853<h3 id="note_19-G22">Note 19-G22: (Library) Added material sharing among models</h3> 854<p>Materials can now be shared among models by specifying the model having the material to be shared in SceneBuilder::SharedMaterialModel. This offers performance advantages when displayed more than one model having the same material settings. 855</p> 856<h3 id="note_19-G23">Note 19-G23: (Library) Revised behavior so that when a skeleton has been shared UpdateView is not performed for the shared skeleton</h3> 857<p>Although UpdateView used to be called even for shared skeletons, behavior has been revised so that it is no longer called. 858</p> 859<h3 id="note_19-G24">Note 19-G24: (Library) Revised specifications so that Skeleton::m_IsUpdated is not changed by SkeletonUpdater</h3> 860<p>Specifications have been revised so that changes to the Skeleton::m_IsUpdated flag, that used to be made by SkeletonUpdater, are now made by SceneUpdater. With this change, application must set m_IsUpdated as necessary when directly using low-level API functions. For further details, see the LowLayerAnimationDemo. 861</p> 862<h3 id="note_19-G25">Note 19-G25: (Library) Changed specifications so that an assert is executed for billboards when using ModelCoordinate</h3> 863<p>When using ModelCoordinate, billboard calculations are not performed correctly. Always use WorldCoordinate. 864</p> 865<h3 id="note_19-G26">Note 19-G26: (Library) Extended the SetRenderTarget member of the RenderContext class</h3> 866<p>Added a version of SetRenderTarget that passes the Viewport class. 867</p> 868<h3 id="note_19-G27">Note 19-G27: (Library) Abolished the Activate method from the Material class for optimization purposes</h3> 869<p>The Material::Activate method has been abolished to optimize material settings. MaterialActivator is now called directly by ActivateMaterial in the RenderContext class. 870</p> 871<h3 id="note_19-G28">Note 19-G28: (Library) Added Model::UserParameter as a user-configurable parameter</h3> 872<p>UserParameter was added for use by users. This parameter can be obtained or set using Model::Set/GetUserParameter. 873</p> 874<h3 id="note_19-G29">Note 19-G29: (Library) Added a function for generating command for ShadowMap and an API member function for changing FragmentOperationMode</h3> 875<p>A function for generating ShadowMap commands was added to the GraphicsDevice class. Get/SetFragmentOperationMode was also added to the ResFragmentOperation class. For information on setting ShadowMap, see ShadowMapDemo. 876</p> 877<h3 id="note_19-G30">Note 19-G30: (Library) Changed the reference destination of the flag for skipping TransformNode calculations from WorldTransform to Transform</h3> 878<p>The reference destination of the flag for skipping TransformNode calculations was changed from WorldTransform to Transform This matches the behavior when referencing Transform and skipping calculations during Bone calculations. 879</p> 880<h3 id="note_19-G31">Note 19-G31: (Library) Abolished IsBranchWorldMatrixCalculationEnabled for skipping calculations for self and child nodes below</h3> 881<p>IsBranchWorldMatrixCalculationEnabled for skipping calculations for self and child nodes below has been abolished. FLAG_IS_WORLDMATRIX_CALCULATION_ENABLED can be used instead for TransformNode::Transform. 882</p> 883<h3 id="note_19-G32">Note 19-G32: (Library) Support of named visibility at the node level under DCC</h3> 884<p>Named visibility that can be set at the node level under DCC has been added. The MeshNodeVisibilities member has been added to the Model resource. Meshes reference each corresponding ResMeshNodeVisibility, respectively. Visibility for meshes and mesh nodes can be obtained using Model::IsMeshVisible(). For details, see "How do I set mesh visibility using DCC node names?" in the FAQ. 885</p> 886<h3 id="note_19-G33">Note 19-G33: (Library) Support for named visibility animations at the node level under DCC</h3> 887<p>Support has been added for visibility animations bound to named visibilities set at the node level under DCC. Initialization and playback is carried out according to the same procedure as other visibility animations. 888</p> 889<h3 id="note_19-G34">Note 19-G34: (Library) Added OffscreenBuffer</h3> 890<p>OffscreenBuffer has been added for writing to textures. 891</p> 892<h3 id="note_19-G35">Note 19-G35: (Library) Added a feature to allow binding multiple animations to a single model</h3> 893<p>Up to this version, only one AnimObject could be bound to a model, but in this version a change has been made to an interface that allows multiple animations to be bound. If multiple bound animations interfere at the same place, data is overwritten by the last animation evaluated. For details, see PartialAnimationDemo. Be sure to use blender as usual when blending multiple animations. 894</p> 895<h3 id="note_19-G36">Note 19-G36: (Library) Added an API member function for dynamically swapping lookup tables</h3> 896<p>An API member function was added for swapping each table in ResFragmentLightingTable. Settings are made as with ResFragmentLightingTable::GetDistribution0Sampler().SetSampler(ResImageLookupTable). 897</p> 898<h3 id="note_19-G37">Note 19-G37: (Library) Added an API member function for controlling animation frames</h3> 899<p>BaseAnimEvaluator::SetStartFrame() and BaseAnimEvaluator::SetEndFrame() were added as API member functions for changing the start frame and end frame of animations for BaseAnimEvaluator. 900</p> 901<p>BaseAnimEvaluator::ResetFrame() was also added as an API member function for resetting frames. 902</p> 903<h3 id="note_19-G38">Note 19-G38: (Library) Added functions to BaseAnimEvaluator for accessing AnimFrameController user data</h3> 904<p>The functions GetUserData() and SetUserData() were added to BaseAnimEvaluator for accessing AnimFrameController user data. 905</p> 906<h3 id="note_19-G39">Note 19-G39: (Library) Added FLAG_IS_VIEW_DEPENDENCE_FORCE_CALCULATION_ENABLED</h3> 907<p>FLAG_IS_VIEW_DEPENDENCE_FORCE_CALCULATION_ENABLED has been added as a flag to always force View calculations even if FLAG_IS_WORLDMATRIX_CALCULATION_ENABLED has been set to 0 by SkeletonUpdater::UpdateView. The default value is 0. Set to 1 to force calculation of View. 908</p> 909<h3 id="note_19-G40">Note 19-G40: (Library) Changed constructors that only specified Signal size</h3> 910<p>A change has been made to constructors that require specification of size and memory because memory is not allocated inside constructors. 911</p> 912<h3 id="note_19-G41">Note 19-G41: (Library) Abolished RelativeHashMaterialIdGenerator</h3> 913<p>RelativeHashMaterialIdGenerator was abolished. Be sure to set either SortingMaterialIdGenerator or an independently created IMaterialIdGenerator. 914</p> 915<h3 id="note_19-G42">Note 19-G42: (Library) Changed the initial value of the IsFixedSizeMemory parameter</h3> 916<p>The initial value of the IsFixedSizeMemory parameter used by Builder of SortingMaterialIdGenerator from false to true. 917</p> 918<h3 id="note_19-G43">Note 19-G43: (Library) Changed specifications of BaseAnimEvaluator::ChangeAnim().</h3> 919<p>Specifications were changed so that SetStepFrame(1.0f) is called internally. 920</p> 921<h3 id="note_19-G44">Note 19-G44: (Library) Deleted unused members of ResImageLookupTable</h3> 922<p>Unused members of ResImageLookupTable have been deleted. 923</p> 924<h3 id="note_19-G45">Note 19-G45: (Library) Fixed a bug where operations were not being performed correctly for SkeletalModel objects whose Model Translate Offset was ParticleModel or Model Coordinate</h3> 925<p>The macro definition name for enabling this feature has been changed from "ENABLE_MODEL_TRANSLATE_OFFSET" to "NW_GFX_MODEL_TRANSLATE_OFFSET_ENABLED". This definition has been moved from "gfx_RenderContext.h" to "gfx_Config.h". 926</p> 927<p>This provides support for SkeletalModel objects whose Model Translate Offset is no ParticleModel or Model Coordinate. 928</p> 929<p>If this feature is enabled, the value of "RenderContext::ModelTranslateOffset()" is calculated for the world matrix when rendering various models. 930</p> 931<h3 id="note_19-G46">Note 19-G46: (Library) Added a function for creating empty animation resources</h3> 932<p>The following functions have been added for creating empty animation resources that have no animation. 933</p> 934<ul><li> ResAnim::CreateEmptySkeletalAnim 935</li> 936<li> ResAnim::CreateEmptyMaterialAnim 937</li> 938<li> ResAnim::CreateEmptyVisibilityAnim 939</li> 940<li> ResAnim::CreateEmptyCameraAnim 941</li> 942<li> ResAnim::CreateEmptyLightAnim 943</li> 944</ul> 945<h3 id="note_19-G47">Note 19-G47: (Library) Added a special version pointer to Foreach* of ResGraphicsFile</h3> 946<p>A special version pointer has been added to Foreach* of ResGraphicsFile. Information from function objects after Foreach can now be obtained by passing function objects and so on as pointers. 947</p> 948<h3 id="note_19-G48">Note 19-G48: (Library) Added ForeachModelMaterial to ResGraphicsFile</h3> 949<p>ForeachModeMaterial has been added for calling a function object for each ResGraphicsFile material. With this addition, the DefaultShaderAutoSelector operator has been revised for use with this function. 950</p> 951<h3 id="note_19-G49">Note 19-G49: (Library) Added a function for binding animations that returns Result</h3> 952<p>The TryBind() binding function has been added. It returns nw::gfx::Result to animation objects such as AnimEvaluator. 953</p> 954<h3 id="note_19-G50">Note 19-G50: (Library) Changed specifications of material animation group original values</h3> 955<p>Although the original value of material animation groups used to point to the start address of the material object, this has been changed to the address of the corresponding parameter. With this change, values can be used just like the original values of other animation groups. 956</p> 957<h3 id="note_19-G51">Note 19-G51: (Library) Specifications have been expanded so that SceneUpdater can be inherited and used</h3> 958<p>Implementation of code has been moved to a header file because SubmitViewInternal of SceneUpdater could not be inherited and used. Because implementation has been moved to the header file named gfx_SceneUpdateHelper.h, be sure to include this header in sources that require it. 959</p> 960<h3 id="note_19-G52">Note 19-G52: (Library) Abolished BufferCount of SceneBuilder</h3> 961<p>SceneBuilder::BufferCount, specified when creating models, has been abolished. Determination of whether there is a buffer can be made using only SceneBuilder::bufferOption. 962</p> 963<h3 id="note_19-G53">Note 19-G53: (Library) Added a function for skipping depth calculations when adding render targets to RenderQueue</h3> 964<p>By using FastEnqueueModelFunctor or FastEnqueueSkeletalModelFunctor of the RenderQueue class, depth calculations are not made for meshes other than in render layer 1 (translucent layer). 965</p> 966<p>Finally, make sure quantization of depth data is skipped by using CreatePriorMaterialAndZeroDepthRenderKeyFactory with the Factory used to create RenderKey. 967</p> 968<p>Parts of code that use SORT_DEPTH_OF_TRANSLUCENT_MESH_ENABLED, in demo_GraphicsSystem.cpp of the demo library, may serve as reference. 969</p> 970<h3 id="note_19-G54">Note 19-G54: (Library) Added the GetOwnerData function fo the ResTextureSampler class</h3> 971<p>The GetOwnerData function has been added. This function is used to get the ResTextureMapper that owns ResTextureSampler. 972</p> 973<h3 id="note_19-G55">Note 19-G55: (Library) Revised the error check used with CommandCacheManager::Free</h3> 974<p>Behavior has been changed so that processing continues with a warning rather than an error if no allocator has been set when using CommandCacheManager::Free. 975</p> 976<h3 id="note_19-G56">Note 19-G56: (Library) Added user data to ResSkeleton</h3> 977<p>User data was added to the ResSkeleton resource. User data can be added to skeletons under CreativeStudio. 978</p> 979<h3 id="note_19-G57">Note 19-G57: (Library) Fixed a bug where light and camera transform animations were not being output correctly</h3> 980<p>A bug was fixed where the value of components without an animation were illegal if a curve was applied only to some components. 981</p> 982<h3 id="note_19-G58">Note 19-G58: (Library) Fixed a bug where the animation evaluation value was sometimes undefined</h3> 983<p>If there were multiple keys in the same frame, it would become undefined as to which key to use for the evaluation value of that frame. Code has been revised so that the last key value is always used. 984</p> 985<h3 id="note_19-G59">Note 19-G59: (Library) Changed WorldTransform::Scale of TransformNode and Skeleton to a scale value that includes one's own node (bone)</h3> 986<p>In order to optimize subsequent calculations, the scale value of WorldTransform::Scale of TransformNode and Skeleton has been changed to a scale value that includes one's own node (bone). If you need the conventional scale value, get the scale value of the parent node (bone). 987</p> 988<h3 id="note_19-G60">Note 19-G60: (Library) Changed particle emitter behavior when the playback rate exceeds 1</h3> 989<p>In past versions, if the playback rate exceeded 1, emission from the previous evaluation time up to the scheduled emission stop time was not performed if the emitter's emission time had ended at time of evaluation. This was changed so that the number of particles expected to be emitted are actually emitted. 990</p> 991<h3 id="note_19-G61">Note 19-G61: (Library) Added an API function for changing vertex parameter values</h3> 992<p>Vertex parameter values can now be changed using ParticleCollection::SetParameter. 993</p> 994<h3 id="note_19-G62">Note 19-G62: (Library) Added ParticleEmitterArray and ParticleModelArray to SceneContext</h3> 995<p>An array for storing ParticleEmitter and ParticleModel only has been added to SceneContext to increase speed. Be sure to set an upper limit as necessary using Description. 996</p> 997<h3 id="note_19-G63">Note 19-G63: (Library) Fixed a bug where the time difference with the emission destination was not taken into account</h3> 998<p>A bug was fixed during emission from an emitter or child emissions where the time difference with the AnimFrameController being emitted to was not being taken into account. 999</p> 1000<h3 id="note_19-G64">Note 19-G64: (Library) Added a feature for checking values passed to the particle shader</h3> 1001<p>For builds other than release builds, a check has been added to make sure that the value of the matrix set for the particle shader is not NAN. In the case of debug builds, all stream data is checked. 1002</p> 1003<h3 id="note_19-G65">Note 19-G65: (Library) Abolished ID streams</h3> 1004<p>The PARTICLEUSAGE_ID stream has been abolished to increase speed. If a unique ID is required for each particle inside ParticleSet, you can utilize the fact that particles born at the same time have different ACTIVEINDEX values and combine the values of LIFE (f32) and ACTIVEINDEX (u16). 1005</p> 1006<h3 id="note_19-G66">Note 19-G66: (Library) RenderColorFormat::RENDER_COLOR_FORMAT_RGB565_OES has been renamed RENDER_COLOR_FORMAT_RGB565</h3> 1007<p>Because there was an error in the name of RENDER_COLOR_FORMAT_RGB565_OES in the enum definition of RenderColorFormat, it has been renamed RENDER_COLOR_FORMAT_RGB565. 1008</p> 1009<h3 id="note_19-G67">Note 19-G67: (Library) Support for Velocity-Initial Velocity "randomize specified direction"</h3> 1010<p>Support has been added for "Randomize specified direction, allowing elliptical shapes to be emitted by specifying "Direction" and "Random angle". 1011</p> 1012<h3 id="note_19-G68">Note 19-G68: (Shader) Corrected mistakes in a register name and associated definition name in VertexShader.h</h3> 1013<p>A register name and associated definition name in VertexShader.h were incorrect in terms of the processing represented, so they have been changed. 1014</p> 1015<p>Register TexPos(0,1,2) has been changed to UvMap(0,1,2) 1016</p> 1017<p>The definition name nw_texture_coord_position(0,1,2) has been changed to nw_uv_mapping(0,1,2) 1018</p> 1019<h3 id="note_19-G69">Note 19-G69: (Shader) Revised the particle default shader</h3> 1020<p>The behavior of billboards parallel to the screen, when an uneven scale is applied to a model, has been changed. 1021</p> 1022<h3 id="note_19-G70">Note 19-G70: (Demo) Added shadow demos</h3> 1023<p>Projection shadow and shadow map demos have been added. For details, see the Function Reference demos. 1024</p> 1025<h3 id="note_19-G71">Note 19-G71: (Demo) Added ConstraintDemo</h3> 1026<p>ContraintDemo has been added. For details, see the Function Reference demos. 1027</p> 1028<h3 id="note_19-G72">Note 19-G72: (Demo) Added LowLayerAnimationDemo</h3> 1029<p>LowLayerAnimationDemo has been added. This demo plays skeletal animations without using scene graph features or the demo library render system. 1030</p> 1031<h3 id="note_19-G73">Note 19-G73: (Demo) Added AnimationBlendDemo</h3> 1032<p>Animation blend-related demos have been removed from AnimationDemo, and AnimationBlendDemo has been added. 1033</p> 1034<h3 id="note_19-G74">Note 19-G74: (Demo) Added AnimationChangeDemo</h3> 1035<p>The demo AnimationChangeDemo has been added. This demo dynamically switches animation resources held by animation evaluation. 1036</p> 1037<h3 id="note_19-G75">Note 19-G75: (Demo) Added PartialAnimationDemo</h3> 1038<p>PartialAnimationDemo has been added. This demo binds multiple animation evaluations to a single model and plays partial animations. 1039</p> 1040<h3 id="note_19-G76">Note 19-G76: (Demo) Added DynamicMaterialDemo</h3> 1041<p>DynamicMaterialDemo has been added. This demo dynamically changes material settings. Descriptions are included for lookup tables, textures, material buffer, independent material settings. 1042</p> 1043<h3 id="note_19-G77">Note 19-G77: (Demo) Added ParticleLowLayerDemo</h3> 1044<p>This is the particle version of LowLayerDemo. ParticleLowLayerDemo has been added. This demo plays particles without using scene graph features or the demo library render system. 1045</p> 1046<h3 id="note_19-G78">Note 19-G78: (Demo) Corrected a problem with camera control update processing</h3> 1047<p>Processing used for camera control by CameraController in demo programs was incorrect in that changes to the camera position and camera matrix did not match. The order in which updates are made has been changed to resolve this problem. 1048</p> 1049<h3 id="note_19-G79">Note 19-G79: (Demo) Changed the demo memory management method</h3> 1050<p>Specifications have changed so that all FCRAM memory is obtained from device memory. In addition, specifications have changed so that the heap is managed for each heap. Particle-related memory can now be obtained from another allocator. 1051</p> 1052<h3 id="note_19-G80">Note 19-G80: (Converter) Revised specifications so that normals are deleted if a material light is disabled</h3> 1053<p>Specifications have been revised so that normals and tangents are deleted from shapes during binary conversion if the vertex light, hemispherical light, or fragment light of a material has become invalid. If you require output of normals, be sure to enable material lighting beforehand. 1054</p> 1055<h3 id="note_19-G81">Note 19-G81: (Converter) Changed specifications so that vertices are output in interleave format by default</h3> 1056<p>Specifications have been changed so that the vertex array is output in interleave format during binary conversion. To output in separate format, use the --force_separate_attribute option. 1057</p> 1058<h3 id="note_19-G82">Note 19-G82: (Converter) Revised specifications so that a warning is issued for the --auto_create_shader option during script execution</h3> 1059<p>Because the --auto_create_shader option is disabled even if specified when executing a script file, specifications have been revised so that a warning is displayed if the option is encountered. 1060</p> 1061<h3 id="note_19-G83">Note 19-G83: (Simple Actual Hardware Viewer) Scheduled abolishment of the simple actual hardware viewer in NW4C 1.2.0</h3> 1062<p>The simple actual hardware Viewer is scheduled for abolishment in NW4C 1.2.0. In the future, plans call for addition of features to Viewer as needed for use as an actual hardware preview tool. 1063</p> 1064<h2 id="version_1_0_1">■ Changes in 1.0.1</h2> 1065<h3 id="note_18-G01">Note 18-G01: (Runtime) Revised the GPU command for setting LookupTable.</h3> 1066<p>Although a 256-word register setting was being used to set LookupTable in the GPU, this was not safe processing for the GPU, so it was split into two 128-word register settings. Along with this revision, the binary version of ResLookUpTableSet has been updated. 1067</p> 1068<h3 id="note_18-G02">Note 18-G02: (Runtime) Changed render queue operations when using a material buffer</h3> 1069<p>Even if a buffer was being used when adding meshes to the render queue, some parts were being referenced by the original transparency. This was changed. 1070</p> 1071<h3 id="note_18-G03">Note 18-G03: (Runtime) Revised DisconnectAndDestroy of Signal</h3> 1072<p>Fixed a bug where DisconnectAndDestroy of Signal would result in a compiler error. 1073</p> 1074<h3 id="note_18-G04">Note 18-G04: (Runtime) Fixed a bug where ChangeAnim of AnimEvaluator and TransformAnimEvaluator was not functioning correctly</h3> 1075<p>ChangeAnim did not function correctly if the number of animation members of ResAnim differed before and after switching animations. 1076</p> 1077<p>(Transform)AnimEvaluator::Builder::MaxAnimMembers was added along with this revision. For the appropriate values to set, see the reference manual. 1078</p> 1079<h3 id="note_18-G05">Note 18-G05: (Shader) Output texcoord1 using a particle shader</h3> 1080<p>We made it so texcoord1 is output for multi-textures. The contents output are the same as for texcoord0. 1081</p> 1082<h3 id="note_18-G06">Note 18-G06: (Shader) Increased the accuracy of rotation of the particle shader</h3> 1083<p>There was a bug due to low accuracy when calculating the rotation matrix where the error in the UV coordinates for each pattern would appear large if a texture pattern animation was split into many divisions. This bug has been handled by increasing the accuracy of trig functions. 1084</p> 1085<h3 id="note_18-G07">Note 18-G07: (Demo) Resolved tearing of the upper screen (for the right eye)</h3> 1086<p>There was tearing of the upper screen because the display buffer swapper for the upper screen (right eye) was not set correctly. The setting has been corrected and the tearing problem resolved. 1087</p> 1088<pre> 1089</pre> 1090<h2 id="version_1_0_0">■ Changes in 1.0.0</h2> 1091<h3 id="note_17-G01">Note 17-G01: (Library) Changed the API functions SceneInitializer, IMaterialIdGenerator and RelativeHashMaterialIdGenerator</h3> 1092<p>The API was changed as given below in order to create material IDs based on the relationship between materials. 1093</p> 1094<ul><li> SceneInitializer 1095</li> 1096</ul> 1097<pre> Added Begin() and End() for pre-processing and post-processing of scene initialization. 1098 These functions must be called before and after Accept() is invoked on the SceneNode. 1099</pre> 1100<pre> SceneInitializer::Begin(); 1101 SceneNode::Accept(SceneInitializer); 1102 SceneInitializer::End(); 1103</pre> 1104<ul><li> IMaterialIdGenerator, RelativeHashMaterialIdGenerator 1105</li> 1106</ul> 1107<pre> 1108 Added the function Accept(Material* material) = 0; called from SceneInitializer::Visit(). 1109 Changed the Generate function called from SceneInitializer::End() 1110</pre> 1111<p>With this change, similarities between materials can now be calculated by MaterialIDGenerator. 1112</p> 1113<h3 id="note_17-G02">Note 17-G02: (Library) Moved the visible flag for models from a resource to an instance</h3> 1114<p>Added a visible flag and the functions IsVisible() and SetVisible() for manipulating it to the model class. Only this flag is referenced at time of drawing. The visibility flag for the ResModel class is only used as the initial value of the visibility flag included in the Model class. Note that after the model class is created, the visibility flag of the ResModel class has no effect even if changed using the SetVisible function. 1115</p> 1116<p>Specifications have changed so that the flag for the model class can be controlled for visibility animations as well. 1117</p> 1118<h3 id="note_17-G03">Note 17-G03: (Library) Fixed a billboard bug, optimized WorldMatrixUpdater, and abolished the Update method of WorldMatrixUpdater</h3> 1119<p>Along with fixing this problem with billboards, a local transform for parent nodes has been added as an argument to the Update method of WorldMatrixUpdater. In addition, the scale value of WorldTransform calculated by WorldMatrixUpdater has been changed from the same value of the LocalTransform to the accumulated scale up to an including parents. With this, the IS_CUMULATE_UNIFORM_SCALE and IS_CUMULATE_SCALE_ONE flags have been eliminated. 1120</p> 1121<p>In addition, for further optimization, the Update method of WorldMatrixUpdater has been split into UpdateMaya, UpdateXsi and UpdateBasic. Matrix updates made via SceneUpdater have no effect. 1122</p> 1123<h3 id="note_17-G04">Note 17-G04: (Library) Increased the speed of frame format skeletal animations</h3> 1124<p>Prior to this version, the bind pose value was copied for each from for elements not including animation. This has been changed so that a copy is made only once at time of binding. 1125</p> 1126<p>Note that with this change the correct skeleton pose does not result between calling TransformAnimEvaluator::Bind() and initial animation evaluation. 1127</p> 1128<p>If the evaluation result cache for related information is not needed, the process load can be further reduced by setting TransformAnimEvaluator::Builder::AllocCache() to false. This has been set to true in AnimationDemo of the past. 1129</p> 1130<h3 id="note_17-G05">Note 17-G05: (Library) Increased the speed when there are many animation members</h3> 1131<p>The speed of processing has been increased when there are many members that can be animated, but only a few members to actually be animated. Effects are shown when there are many materials. This does not include cases when using AnimBlender. 1132</p> 1133<h3 id="note_17-G06">Note 17-G06: (Library) Added a way to switch animations at high speed</h3> 1134<p>Added the AnimEvaluator::ChangeAnim() and TransformAnimEvaluator::ChangeAnim() functions. Use of this method is faster than destroying AnimEvaluator and then playing. 1135</p> 1136<h3 id="note_17-G07">Note 17-G07: (Library) Added and revised the AnimEvaluator interface</h3> 1137<p>Added the AnimEvaluator::GetPlayPolicy() and AnimEvaluator::SetPlayPolicy() functions. 1138</p> 1139<p>Also, the return value of GetAnimData() has been changed to const nw::anim::ResAnim. This was done to avoid confusion because there is no effect on AnimEvaluator operations even if the content of ResAnim is changed. 1140</p> 1141<h3 id="note_17-G08">Note 17-G08: (Library) Fixed a bug where data would be updated multiple times when sharing a skeleton</h3> 1142<p>A bug was fixed by adding an IsUpdated flag to skeletons so that update is not made more than once per frame. 1143</p> 1144<h3 id="note_17-G09">Note 17-G09: (Library) Fixed a bug with light positions</h3> 1145<p>The position of point lights and spotlights was being calculated in the local coordinate system. (The coordinate system of the parent was not being inherited.) The resource's Transform value was also being used, but specifications have changed so that an instance is used instead. 1146</p> 1147<h3 id="note_17-G10">Note 17-G10: (Library) Fixed a bug where render commands would become unusable</h3> 1148<p>A bug was fixed where render commands could not be inherited and could not be used due to spelling mistakes and other issues. A RenderCommand test was added to SceneTreeDemo. 1149</p> 1150<h3 id="note_17-G11">Note 17-G11: (Library) Added DynamicBuilder to ResImageTexture</h3> 1151<p>DynamicBuilder has been added so that textures can be created dynamically. A created texture can be replaced by using SetTexture() of TextureMapper. 1152</p> 1153<h3 id="note_17-G12">Note 17-G12: (Library) Added LightEnabled to ResLight</h3> 1154<p>This allows lights to ben enabled/disabled. Animation is also possible. This flag is only enabled when the scene environment light set includes the target light. 1155</p> 1156<h3 id="note_17-G13">Note 17-G13: (Library) Moved resource-related classes to the res namespace</h3> 1157<p>Resource-related classes (gfx_Res and anim_Res) have been moved to the res folder and the namespaces have been respectively changed from gfx to gfx::res and from anim to anim::res. Using can be used as usual to use a resource-related class from the gfx and anim namespace. However, includes in the header file must be changed from nw/gfx/~ to nw/gfx/res/~ and from nw/anim/~ to nw/anim/res/~. 1158</p> 1159<h3 id="note_17-G14">Note 17-G14: (Library) Support for light animations</h3> 1160<p>Light animations are initialized and played back using a procedure similar to that for camera animations. See gfx::ResGraphicsFile::GetLightAnims(), gfx::Light::GetAnimGroup() and gfx::Light::SetAnimObject(). 1161</p> 1162<h3 id="note_17-G15">Note 17-G15: (Library) Corrected a problem with billboards</h3> 1163<p>In billboarding, Rotate and Scale were not applied to bones and nodes above the parent. That problem has been corrected. 1164</p> 1165<h3 id="note_17-G16">Note 17-G16: (Library) Changed the defined names for types of transparencies</h3> 1166<p>Changed the defined names for transparency types for Layer0 through Layer3. Previous names remain for compatibility. 1167</p> 1168<h3 id="note_17-G17">Note 17-G17: (Library) Split frame format skeletal animation data into separate SRT components</h3> 1169<p>Although a matrix that combines Rotate and Translate has been used up to now, specifications have changed so that Rotate and Translate components are handled separately like the Scale component. This change reduces the binary size for animations without a Translate component. 1170</p> 1171<h3 id="note_17-G18">Note 17-G18: (Library) Fixed a bug where Translate would be overwritten for frame format skeletal animations for which there was no Translate</h3> 1172<p>A bug has been fixed where the Translate component would be overwritten by the bind pose value when playing a frame format skeletal animation for which only Rotate was being animated. 1173</p> 1174<p>This problem would appear when multiple models with difference bone shapes shared the same animation. 1175</p> 1176<h3 id="note_17-G19">Note 17-G19: (Library) Added a function for applying an offset to a model's translation value</h3> 1177<p>The following library build is required to use this feature. Build the library with the ENABLE_MODEL_TRANSLATE_OFFSET macro located in the gfx_RenderContext.h file enabled. 1178</p> 1179<p>The offset value is set using the RenderContext::ModelTranslateOffset() method. 1180</p> 1181<h3 id="note_17-G20">Note 17-G20: (Library) Added a function for resetting the state of an individual SceneEnvironment</h3> 1182<p>The reset process for lights, cameras and fogs that used to handled by the Reset method has been split up into separate reset processes such as ResetFragmentLights. The Reset method calls each of these separate Reset methods internally. 1183</p> 1184<h3 id="note_17-G21">Note 17-G21: (Library) Changed the behavior when an out-of-bounds index has been specified for an nw::gfx::Skeleton get matrix function</h3> 1185<p>Old specifications called for an internal check to this point to be made and NULL to be returned if an out-of-bounds value was specified for the index of the following functions, but this has been changed so that execution terminates on an ASSERT. 1186</p> 1187<ul><li>nw::gfx::Skeleton::GetMatrix(int) Function 1188</li> 1189<li>nw::gfx::Skeleton::TransformPose::GetTransform(int) Function 1190</li> 1191<li>nw::gfx::Skeleton::OriginalPose::GetTransform(int) Function 1192</li> 1193</ul> 1194<p>As in versions up to this one, an index range check is performed internally and the result of that check is returned safely for overload functions, GetMatrix(int, MTX34**) or GetTransform(int, Transform**) that returns a bool value as a result 1195</p> 1196<h3 id="note_17-G22">Note 17-G22: (Library) Corrected a problem with crashing when freeing models</h3> 1197<p>Execution used to crash inside Model destructors under the conditions given below. 1198</p> 1199<ul><li>The material buffer was enabled 1200</li> 1201<li>FLAG_BUFFER_TEXTURE_MAPPER was specified as a BufferOption 1202</li> 1203<li>A texture pattern animation had been played. 1204</li> 1205</ul> 1206<h3 id="note_17-G23">Note 17-G23: (Library) Deleted the nw::gfx::GlSystem::SetGlManager function</h3> 1207<p>Up to this version, the nw::gfx::GlSystem::SetGlManager function was used first to get the GL state within nw::gfx and it was necessary to set a pointer to OpenGL management data. Since this function is no longer needed, it has been deleted from the API. 1208</p> 1209<p>At the same time, an API function for getting program object parameters included in nw:gfx::GISystem has also been deleted. nw::gfx::ShaderBinaryInfo can be used if you need to get shader program parameters. 1210</p> 1211<h3 id="note_17-G24">Note 17-G24: (Library) Added a feature for uniquely controlling Model display with SceneUpdater::SubmitView</h3> 1212<p>You can select the model to be displayed under unique conditions by specifying a class derived from the ISceneUpdater::IsVisibleModelFunctor class to the isVisibleModel argument of SubmitView. 1213</p> 1214<h3 id="note_17-G25">Note 17-G25: (Library) Changed the interpretation of PolygonOffset values</h3> 1215<p>In previous versions, there was a large difference in the effect of the value of ResMaterial::Polygon offset between using a 24-bit format or a 16-bit format for the depth buffer format due to a problem with the precision of 24-bit floating point numbers in hardware. This has been revised to obtain closer effects than previously possible by applying a scale of 128 when using a 24-bit format for the depth buffer. 1216</p> 1217<h3 id="note_17-G26">Note 17-G26: (Library) Changed specifications so that PolygonOffset can be used even when using wScale</h3> 1218<p>Up to this version, specifications were such that ResMaterial::PolygonOffset was disabled if a value other than 0 was set for wScale. Specifications have been changed so the value of PolygonOffset is applied even when wScale is enabled. 1219</p> 1220<p>Note that preview under CreativeStudio differs from the display on actual hardware and that PolygonOffset is not applied when wScale is enabled, because, under PicaOnDesktop specifications, PolygonOffset is disabled if wScale is enabled. 1221</p> 1222<h3 id="note_17-G27">Note 17-G27: (Library) Deleted the GetMask and SetMask functions of ResStencilOperation</h3> 1223<p>The API functions GetMask and SetMask for getting and setting StencilMask information not maintained by the ResStencilOperation class existed by mistake. These functions were deleted. 1224</p> 1225<p>Be sure to use the nw::gfx::GraphicsDevice::SetStencilMask() function when setting StencilMask. 1226</p> 1227<h3 id="note_17-G28">Note 17-G28: (Library) Fixed a bug occurring when FLAG_BUFFER_RASTERIZATION was enabled using nw::gfx::Model buffer options</h3> 1228<p>There was a bug where dynamic changes to the CullingMode were not being applied correctly when FLAG_BUFFER_RASTERIZATION was enabled using the buffer options of nw::gfx::Model. This bug has been fixed. 1229</p> 1230<h3 id="note_17-G29">Note 17-G29: (Library) Deleted the IRenderPass, ISceneRenderer and SceneRenderer classes</h3> 1231<p>The unimplemented classes IRenderPass, ISceneRenderer and SceneRenderer have been deleted. 1232</p> 1233<h3 id="note_17-G30">Note 17-G30: (Library) Corrected a problem where fog was not being applied correctly</h3> 1234<p>A bug has been fixed where fog was not being applied correctly when using wScale with an index fog specification. 1235</p> 1236<h3 id="note_17-G31">Note 17-G31: (Library) Corrected a problem with camera Transform animations</h3> 1237<p>CalculatedTransform::m_Flags was left uninitialized if the evaluation result cache was enabled. Depending on the content of memory, flags would be unexpectedly set, resulting in incorrect behavior. 1238</p> 1239<h3 id="note_17-G32">Note 17-G32: (Library) Eliminated the 32MB boundary restriction on textures</h3> 1240<p>Up to this version, execution used to stop on an ASSERT due to GPU hardware limitations if texture straddled a 32MB boundary. However, ASSERT conditions have been changed because it has been discovered that there actually is no restriction on GPU hardware. 1241</p> 1242<h3 id="note_17-G33">Note 17-G33: (Library) Added SortingMaterialIdGenerator for sorting in material order and attaching material IDs in order.</h3> 1243<p>SortingMaterialIdGenerator has been added for sorting in material order and attaching material IDs in order. Models sorted in order of material can be used by creating material IDs after Accept by SceneInitializer by passing SortingMaterialIdGenerator during SceneInitializer creation. 1244</p> 1245<h3 id="note_17-G34">Note 17-G34: (Library) Changed the GPU command for particles</h3> 1246<p>GL functions would become unusable upon generation of a GPU command. Along with this, vertex resources such as ResPrimitive, ResVertexAttribute, etc. are no longer internally generated. Use ParticleCollection functions for things like getting pointers to streams in the vertex buffer to avoid accessing ParticleShape. 1247</p> 1248<h3 id="note_17-G35">Note 17-G35: (Library) Changed the call to ParticleSceneUpdater::SwapBuffer</h3> 1249<p>This function is now called automatically within the library. Although there is no need for applications to make this call, the function definition remains for compatibility. This definition will be discarded in the next release. 1250</p> 1251<h3 id="note_17-G36">Note 17-G36: (Library) Changed the determination when destroying the parent of a particle child</h3> 1252<p>Specifications have changed so that determination is made using PARTICLEUSAGE_NEG_TIMELIMIT to make things easier to handle using user-defined updaters. There is no change in behavior with conventional use. 1253</p> 1254<h3 id="note_17-G37">Note 17-G37: (Library) Changed specifications so that SDK functions are used to flush the particle VBO</h3> 1255<p>Because GL functions are no longer used, SDK functions are now used when VBO flush has been explicitly executed. 1256</p> 1257<h3 id="note_17-G38">Note 17-G38: (Shader) Optimized the vertex shader and changed several registers</h3> 1258<p>Shaders corresponding to the number of textures have been added to NW4C default shaders (shaders/nwgfx_DefaultShader.csdr and auto_create_shader). 1259</p> 1260<p>Select the shader corresponding to the number of textures for each material by specifying as shown below before resource setup. resourceSet->resource.ForeachMaterial(nw::gfx::DefaultShaderAutoSelector()); 1261</p> 1262<p>However, if the number of textures changes dynamically, this setting must also be changed uniquely. 1263</p> 1264<p>Also, changes have been made to several registers. User shaders must be changed. The changes are as follows: 1265</p> 1266<p>Boolean Registers 1267</p> 1268<ul><li> b1 IsSkinM → IsSmoSk 1269</li> 1270<li> b13 IsNSEnv → IsTex1 1271</li> 1272<li> b14 added IsTex2 1273</li> 1274<li> b15 added IsQuate 1275</li> 1276</ul> 1277<p>Floating Point Number Register 1278</p> 1279<ul><li> The Scale setting for BoneWeight has changed from IrScale[2].y (c9.y) to IrScale[1].w (c8.w). 1280</li> 1281</ul> 1282<h3 id="note_17-G39">Note 17-G39: (Shader) Fixed a problem with projection mapping SRT</h3> 1283<p>A bug has been fixed where Rotate and Translate were not being applied correctly when using a perspective camera with projection mapping. The effect was that projection mapping could not be used with Texture 2. Also, the following changes have been made to register assignments for shaders. 1284</p> 1285<p>Constant Register 1286</p> 1287<ul><li> c17-c19 TexMtx2 → c17-c18 TexMtx2 1288</li> 1289<li> c19 TexTran 1290</li> 1291</ul> 1292<h3 id="note_17-G40">Note 17-G40: (Library1) Added an option for adding a function for applying an offset to a model's translation value</h3> 1293<p>Added the definition of ENABLE_MODEL_TRANSLATE_OFFSET to ShaderConfig.h. You can enable an option to add a feature for applying an offset value to the translation value of a model in the shader by enabling this definition. This function can be enabled by enabling the definition of the same name in RenderContext.h. 1294</p> 1295<h3 id="note_17-G41">Note 17-G41: (Shader) Revised the quaternion calculation algorithm</h3> 1296<p>Sometimes lighting was not being calculated correctly if the inner project of the view vector and normal vector was -1. Correct calculations are now possible by using clamping during the calculation. 1297</p> 1298<h3 id="note_17-G42">Note 17-G42: (Demo) Corrected a spelling mistake in the API</h3> 1299<p>A spelling mistake (or mistakes) were corrected in the following API function (or functions). 1300</p> 1301<ul><li>RenderSystem::ResumedLoadMeter has been changed to ResumeLoadMeter. 1302</li> 1303</ul> 1304<h3 id="note_17-G43">Note 17-G43: (Demo) Started double buffering the command list</h3> 1305<p>The command list is now double-buffered to improve performance. The CommandListSwapper class controls this. 1306</p> 1307<h3 id="note_17-G44">Note 17-G44: (Demo) Added MultiInstanceDemo</h3> 1308<p>MultiInstanceDemo, capable of dynamically adding and removing skeletal models to be animated, has been added. 1309</p> 1310<h3 id="note_17-G45">Note 17-G45: (Demo) Added MultiAnimationDemo</h3> 1311<p>MultiAnimationDemo, capable of switching multiple animations for display, has been added. The following types of animations can be displayed. 1312</p> 1313<ul><li>Skeletal animation 1314</li> 1315<li>Camera animation 1316</li> 1317<li>Material Animation 1318</li> 1319<li>Visibility animation 1320</li> 1321<li>Light animation 1322</li> 1323</ul> 1324<h3 id="note_17-G46">Note 17-G46: (Demo) Added ParticleMultiEmitterDemo and ParticleMultiModelDemo</h3> 1325<p>ParticleMultiEmitterDemo is a demo that places several emitters and sends them to the same ParticleSet. ParticleMultiModelDemo places multiple combinations of emitter and model. 1326</p> 1327<h3 id="note_17-G47">Note 17-G47: (Demo) Changed all demos except SimpleDemo to stereo display</h3> 1328<p>All demos except SimpleDemo have been changed to use stereo display. StereoDisplayDemo was deleted along with this change. 1329</p> 1330<h3 id="note_17-G48">Note 17-G48: (Demo) Changed the GPU load meter</h3> 1331<p>Among the load meters displayed in the lower screen of demo programs, the GPU meter has been changed. Time required for rendering is displayed under <B>GPU</B>, while time required for processes other than rendering, such as buffer transfer and load display, are displayed under <B>GPU other</B>. 1332</p> 1333<h3 id="note_17-G49">Note 17-G49: (Demo) Added a feature for checking for memory leaks to demo programs</h3> 1334<p>During demo program execution, pressing the START Button on the pad restarts the demo. A check for memory leaks is made at this time. A message appears if there has been any change in memory usage since initial demo startup. 1335</p> 1336<h3 id="note_17-G50">Note 17-G50: (Simple Actual Hardware Viewer) Fixed a bug where the display would crash on a texture pattern animation</h3> 1337<p>A bug has been fixed where the display of textures would crash if a texture pattern animation was played under CreativeStudio and then transferred to the viewer. 1338</p> 1339<p>This bug would not occur if binary output was performed using gfxviewer.bat. 1340</p> 1341<h2 id="version_0_8_1">Changes in 0.8.1</h2> 1342<h3 id="note_16-G01">Note 16-G01: (Library) Fixed a bug where LayerId set by functions like SceneUpdater::SubmitView was not being correctly reflected</h3> 1343<p>A bug was fixed where the only the lower two bits of LayerId was being set during RenderElement key generation. 1344</p> 1345<h3 id="note_16-G02">Note 16-G02: (Library) Fixed a bug where the LayerId of particles was not being correctly reflected</h3> 1346<p>A bug was fixed where ParticleLayerId was not being set by SceneUpdater::SubmitView. 1347</p> 1348<h3 id="note_16-G03">Note 16-G03: (Library) Changed the various update processing methods of SceneUpdater to public</h3> 1349<p>The following SceneUpdater methods were changed from protected to public. 1350</p> 1351<ul><li>UpdateTransformNode 1352</li> 1353<li>UpdateSkeletalModel 1354</li> 1355<li>UpdateAnim 1356</li> 1357<li>EvaluateAnim 1358</li> 1359</ul> 1360<h3 id="note_16-G04">Note 16-G04: (Library) Fixed a bug where the ColorMask setting was invalid in the initialized state</h3> 1361<p>There was a problem with GraphicsDevice initial values where ColorMask was sometimes being set incorrectly and models were not being displayed. This bug has been fixed. 1362</p> 1363<h3 id="note_16-G05">Note 16-G05: (Library) Fixed a bug with overwriting particle GPU commands</h3> 1364<p>A bug was fixed where the VBO address was wrong in the double-buffered command cache for particles when creating back faces. 1365</p> 1366<h3 id="note_16-G06">Note 16-G06: (Library) Fixed a calculation mistake made when making a specification in terms of percent of child particle lifespan</h3> 1367<p>A bug was fixed where calculations were not being made using values as a percent. 1368</p> 1369<h3 id="note_16-G07">Note 16-G07: (Library) Fixed a mistake in calculating sphere-shaped particle emitter lifespans</h3> 1370<p>A bug was fixed where a sphere shape would not result due to incorrect calculations when the emitter shape was a sphere. 1371</p> 1372<h3 id="note_16-G08">Note 16-G08: (Library) Changed the plan for abolishing <CODE>AnimFrameController::SetPlayPolicy(u8 loopMode)</CODE></h3> 1373<p>There was a problem where overload resolution with SetPlayPolicy(PlayPolicy playPolicy) was impossible when 0 was passed in an argument. The u8 version of this function will be abolished in the 1.0.0 release to simplify the interface. 1374</p> 1375<h3 id="note_16-G09">Note 16-G09: (Library) Fixed a bug with Step curve evaluation</h3> 1376<p>Evaluation results were incorrect if the current frame and key position were equal. This would result in problems such as incorrect timing for switching textures in texture pattern animations. 1377</p> 1378<h3 id="note_16-G10">Note 16-G10: (Library) Fixed a bug where the material stencil setting was not being correctly reflected</h3> 1379<p>A bug was fixed where the command was not being correctly set. Data must be re-converted. Execute <CODE>nw::gfx::GraphicsDevice::SetStencilMask(true);</CODE> to enable stencils. 1380</p> 1381<h3 id="note_16-G11">Note 16-G11: (Simple Actual Hardware Viewer) Fixed a bug where camera operations were impossible when using multiple cameras</h3> 1382<p>Cameras could not be operated when a camera animation was set for a camera other than the camera used for rendering. 1383</p> 1384<h3 id="note_16-G12">Note 16-G12: (Simple Actual Hardware Viewer) Fixed a bug where parent-child bindings for cameras, lights and fogs were not being reflected</h3> 1385<p>Although bindings were reflected correctly under CreativeStudio preview, they were not being reflected when using the simple actual hardware viewer. 1386</p> 1387<h2 id="version_0_8_0">Changes in 0.8.0</h2> 1388<h3 id="note_15-G01">Note 15-G01: (Library) Added a layer ID setting to models</h3> 1389<p>The SetLayerId and GetLayerId methods were added for models. This is logically OR'ed with the LayerId set by SubmitView. 1390</p> 1391<h3 id="note_15-G02">Note 15-G02: (Library) Added support for changing the playback rate of frame format skeletal animations</h3> 1392<p>The value of a fractional frame is found using linear interpolation to find the value of the previous and next frame. This algorithm emphasizes accuracy over speed. 1393</p> 1394<ul><li>Vector components used in scale and translate operations are subject to linear interpolation. 1395</li> 1396<li>Each element in the rotate matrix for a rotate operation is also subject to linear interpolation. 1397</li> 1398</ul> 1399<h3 id="note_15-G03">Note 15-G03: (Library) Added reference argument versions of methods to the CalculatedTransform class</h3> 1400<p>Reference argument versions of SetTransformMatrix() and SetRotateMatrix() have been created. 1401</p> 1402<h3 id="note_15-G04">Note 15-G04: (Library) Fixed a bug where render priority was not being correctly reflected when creating depth priority render keys</h3> 1403<p>There was a problem when creating render keys using depth priority where the render priority was not being correctly reflected. There was a possibility that translucent materials would not be displayed correctly because depth priority sorting was established as default. This bug has been fixed. 1404</p> 1405<h3 id="note_15-G05">Note 15-G05: (Library) Added render priority to material priority render keys</h3> 1406<p>Render priority can be set to one of 16 levels, from 0 to 15, when using material priority. 1407</p> 1408<h3 id="note_15-G06">Note 15-G06: (Library) Integrated animation updates into SceneUpdater</h3> 1409<p>The SceneUpdater::UpdateAll() function has been added. In addition to the processing provided by UpdateWorld() in versions up to this one, this function also updates animations. Using this function eliminates the need to call Model::UpdateFrame() or AnimBinding::Evaluate(). 1410</p> 1411<p>Plans call for abolishing UpdateWorld() in the 1.0.0 release. Please migrate by that release. 1412</p> 1413<h3 id="note_15-G07">Note 15-G07: (Library) Cleaned up animation update timing</h3> 1414<p>ResGraphicsAnimGroup::EvaluationHint has been reorganized. Plans call for abolishing old enumerator values in the 1.0.0 release. Plans also call for changing the name to EvaluationTiming. In the future, programmers will not need keep track of update timing if they use SceneUpdater::UpdateAll(). 1415</p> 1416<p>Old: 1417</p> 1418<ul><li>EVALUATION_BEFORE_SCENE_TRAVERSE // Visibility animation 1419</li> 1420<li>EVALUATION_BEFORE_SCENE_CULLING // Not used 1421</li> 1422<li>EVALUATION_BEFORE_SCENE_RENDERING // Skeletal and material animations 1423</li> 1424<li>EVALUATION_SKELETAL_ANIMATION // Not used 1425</li> 1426</ul> 1427<p>New: 1428</p> 1429<ul><li>EVALUATION_BEFORE_WORLD_UPDATE // Visibility animations 1430</li> 1431<li>EVALUATION_AFTER_SCENE_CULLING // Skeletal and material animations 1432</li> 1433</ul> 1434<h3 id="note_15-G08">Note 15-G08: (Library) Improved verification of arguments to SceneNode::DetachChild</h3> 1435<p>Made it so an assert is made if an attempt is made to delete a node that is not one's own child. Although the parent of the child node would be NULL under problematic usage of this function up to now, this type of behavior has been eliminated. If an assert is issued, be sure to change code so that the caller executes DetachChild from the right parent. 1436</p> 1437<h3 id="note_15-G09">Note 15-G09: (Library) Added a rotation feature (directional) based on particle distance of motion</h3> 1438<p>The VBO double buffer is used to reference the previous position inside the library. Even if a double buffer is not required for rendering, be sure to call the <CODE>ParticleSceneUpdater::SwapBuffer()</CODE> function. 1439</p> 1440<p>Due to problems with the processing order of child particles up to this version, the ordering of child particles has been moved to the very end. This may cause the position at which child particles appear to shift one frame compared to prior releases. 1441</p> 1442<h3 id="note_15-G10">Note 15-G10: (Library) Changed the particle default shader</h3> 1443<p>The default shader for particles was changed to support a feature for correcting the scale and rotate settings of particles at time of rendering. 1444</p> 1445<h3 id="note_15-G11">Note 15-G11: (Library) Added particle-related features</h3> 1446<ul><li>A feature for copying resources for each node when creating nodes was added. 1447</li> 1448<li>Amount of movement was added to the source code for RotateUpVectorUpdater. 1449</li> 1450<li>An option for specifying in frame units was added for child particles. 1451</li> 1452<li>An option for specifying time of creation for child particles was added. 1453</li> 1454<li>A feature for resolving node references was added to gfx::ParticleUtil. 1455</li> 1456<li>Cache flush code for particles was added to demos. 1457</li> 1458<li>A flag for explicitly flushing the VBO was added to resources. 1459</li> 1460<li>A function object (ParticleSetIsBufferFlushEnabledSetter) for setting the flag for explicitly flushing the VBO was added. 1461</li> 1462<li>A feature for correcting scale and rotate for particles at time of rendering at the ParticleSet level was added. (ParticleSet::SetScaleOffset, ParticleSet::SetRotateOffset) 1463</li> 1464<li>A flag for forcibly setting a ParticleSet to world coordinates was added. 1465</li> 1466<li>A function object (ParticleSetAreEmpty) to check whether ParticleSet is empty was added. 1467</li> 1468<li>A function object (ParticleSetsClear) for emptying ParticleSet was added. 1469</li> 1470<li>An API function (ParticleEmitter::IsAlive) for checking if emitter emission has ended was added. 1471</li> 1472<li>The ResParticleModel::ForeachParticleSet function was added. 1473</li> 1474</ul> 1475<h3 id="note_15-G12">Note 15-G12: (Library) Added particle-related features</h3> 1476<ul><li>Specifications have changed so that RotateUpVectorUpdater does nothing if the standard vector is 0. 1477</li> 1478<li>The handling of emitter, child particle and random updater intervals was changed. 1479</li> 1480<li>Processing when the playback rate of AccelerationUpdater is other than 1 was improved. 1481</li> 1482<li>Processing when straddling a specified interval specified as a ratio of child particle lifespan. 1483</li> 1484</ul> 1485<h3 id="note_15-G13">Note 15-G13: (Library) Fixed a bug related to particles</h3> 1486<ul><li>Fixed problem of particle computation process not being in order of child particle dependence. 1487</li> 1488<li>Fixed a bug where end was handled incorrectly when specified in terms of a ratio of child particle lifespan. 1489</li> 1490<li>Function were replaced with versions safe for normalization of vectors that might be 0 vectors. 1491</li> 1492<li>A bug was fixed where memory might be destroyed if work memory was used to its limit during execution. 1493</li> 1494<li>A bug was foxed where a RandomUpdater interval was not implemented. 1495</li> 1496<li>A bug was fixed where the updater Enable flag was not being used. 1497</li> 1498<li>Fixed a RandomUpdater calculation error. 1499</li> 1500</ul> 1501<h3 id="note_15-G14">Note 15-G14: (Library) Changed class names from RenderEnvironment to SceneEnvironment</h3> 1502<p>Along with support for SceneEnvironmentSetting, the class name RenderEnvironment has been changed to SceneEnvironment. Although the name RenderEnvironement remains as a typedef, plans call for its deletion in the future. 1503</p> 1504<h3 id="note_15-G15">Note 15-G15: (Library) [Important] Added a feature for setting the scene environment</h3> 1505<p>This provides a feature equivalent to NW4R's scene animation. Scene environment settings, gathering together the lights, cameras and fogs required to render a mesh, can be created under CreativeStudio. LightSet, Camera and fog are added to RenderEnvironment by applying these scene environment settings (SceneEnvironmentSetting) to a SceneEnvironment that includes RenderContext. RenderContext selects the LightSet, Camera and Fog to be added to the SceneEnvironment based on a materials LightSetIndex and FogIndex. 1506</p> 1507<p>For backward compatibility, features for directly setting the light, camera and fog in SceneEnvironment still remain. If render environment settings have been applied, note that settings made by the program are prioritized and applied. 1508</p> 1509<h3 id="note_15-G16">Note 15-G16: (Library) Added Builder to SkeletalModel</h3> 1510<p>Builder was added with plans to abolish the Create method so that SkeletalModel can be flexibly created. 1511</p> 1512<h3 id="note_15-G17">Note 15-G17: (Library) Added a feature for ignoring material settings</h3> 1513<p>RenderMode was added to RenderContext. Material settings can be ignored by setting RENDERMODE_IGNORE_MATERIAL into RenderMode. 1514</p> 1515<h3 id="note_15-G18">Note 15-G18: (Library) Corrected spelling mistakes in the API</h3> 1516<p>A spelling mistake (or mistakes) were corrected in the following API function (or functions). 1517</p> 1518<ul><li>ResTextureCombiner::OPERANDRGB_ONE_MINUS_BLUD was changed to OPERANDRGB_ONE_MINUS_BLUE. 1519</li> 1520<li>ResTextureCombiner::SOURCE_PREVISOU_BUFFER was changed to SOURCE_PREVIOUS_BUFFER. 1521</li> 1522<li>Model::BUFFER_SHADING_PARMETER was changed to BUFFER_SHADING_PARAMETER. 1523</li> 1524<li>RenderContext::SetMatrixPalletCount was changed to SetMatrixPaletteCount. 1525</li> 1526<li>RenderContext::IsRefrectionEnabled was changed to IsReflectionEnabled. 1527</li> 1528</ul> 1529<h3 id="note_15-G19">Note 15-G19: (Library) Added a utility function for controlling the updater for the camera class</h3> 1530<p>A utility function was added for directly controlling view updater and projection updater parameters from the camera class. 1531</p> 1532<h3 id="note_15-G20">Note 15-G20: (Library) Added an interface for restoring status before animation playback</h3> 1533<p>A Reset() method was added to the AnimEvaluator class for restoring animation targets to initial status. If performed on materials, you need to create a material buffer. Set the options for MaterialBufferCount() and BufferOption() when creating models with the SceneBuilder class. For BufferOption you need at least Model::MULTI_FLAG_ANIMATABLE_MATERIAL. 1534</p> 1535<h3 id="note_15-G21">Note 15-G21: (Library) Made the user register start offset specifiable</h3> 1536<p>Registers were hard for users to use because vertex light settings after UnivReg were used. Vertex lights did not use a register beyond the user register start offset. For details, see SampleData\Graphics\Shader\UserShader. 1537</p> 1538<h3 id="note_15-G22">Note 15-G22: (Library) Support for camera animations</h3> 1539<p>Camera animations are initialized and played back using a procedure similar to that for material animations. See gfx::ResGraphicsFile::GetCameraAnims(), gfx::Camera::GetAnimGroup(), and gfx::Camera::SetAnimObject(). 1540</p> 1541<h3 id="note_15-G23">Note 15-G23: (Library) Fixed a bug where a camera Twist and ViewRotate settings were being interpreted as degrees</h3> 1542<p>The correct unit is radians. This problem occurred only when InheritingRotate was turned off for ViewRotate. 1543</p> 1544<h3 id="note_15-G24">Note 15-G24: (Library) Support for fog</h3> 1545<p>Fog is now supported at actual hardware runtime. 1546</p> 1547<h3 id="note_15-G25">Note 15-G25: (Library) Added the following methods to the GraphicsDevice class</h3> 1548<ul><li>The ActivateViewport() method was added for setting the view port. 1549</li> 1550<li>The ActivateScissor() method was added for setting scissors. 1551</li> 1552</ul> 1553<h3 id="note_15-G26">Note 15-G26: (Library) Added the CallbackChain class and a class for calculating GPU processing time</h3> 1554<p>This is used to calculate GPU processing time required for code between Begin() and End(). 1555</p> 1556<h3 id="note_15-G27">Note 15-G27: (Library) The fog updater now supports w buffer</h3> 1557<p>Added the <B>W scale</B> parameter to Camera. The fog updater now supports w buffer. 1558</p> 1559<h3 id="note_15-G28">Note 15-G28: (Library) Fixed a bug where Softimage format data whose scale values had changed were not being rendered correctly</h3> 1560<p>A bug was fixed where Softimage format data whose scale values had changed were not being rendered correctly. 1561</p> 1562<h3 id="note_15-G29">Note 15-G29: (Library) Added a render sort algorithm</h3> 1563<p>A type of TopPriorDepthRenderKeyFactory was added to the class for creating keys for sorting. Create keys using the following methods. 1564</p> 1565<ul><li>CreateTopPriorDepthRenderKeyFactory 1566</li> 1567<li>CreateTopPriorDepthReverseDepthRenderKeyFactory 1568</li> 1569</ul> 1570<p>A render sort mode specification has been added to ISceneUpdate::SubmitView. 1571</p> 1572<ul><li>All mesh base depth calculations are performed if <CODE>ALL_MESH_BASE_SORT</CODE> is set in the argument <SPAN class="argument">renderSortMode</SPAN>. 1573</li> 1574<li>If OPAQUE_MESH_BASE_AND_TRANSLUCENT_MODEL_BASE_SORT is set in the argument renderSortMode, model base depth calculations are performed for translucent, additive and subtractive meshes. 1575</li> 1576</ul> 1577<h3 id="note_15-G30">Note 15-G30: (Library) Changed the binary format</h3> 1578<p>All resource class binary format versions have been updated because the method for creating resource class type information has changed. Reconversion is necessary because old version binary cannot be used. 1579</p> 1580<h3 id="note_15-G31">Note 15-G31: (Library) Corrected a problem with billboards</h3> 1581<p>Corrected the following bugs: 1582</p> 1583<ul><li>Billboards with thickness were shown as thin 1584</li> 1585<li>Billboards were not the correct size in ScreenViewpoint 1586</li> 1587<li>Billboard orientation in Viewpoint system was unnatural 1588</li> 1589</ul> 1590<h3 id="note_15-G32">Note 15-G32: (Library) Fixed a bug where visibility animations were sometimes not being correctly evaluated</h3> 1591<p>Incorrect evaluation results would occur if the StartFrame attribute of <BoolCurve> tags in an intermediate file was not 0. 1592</p> 1593<h3 id="note_15-G33">Note 15-G33: (Shader) Changed the sphere environment map algorithm</h3> 1594<p>A change was made to the same algorithm used under NW4R where the normal is used. To use a method that uses the reflection vector as used up to now, disable NW_NORMAL_ENV_MAP inside Shader.Config.h and then create a shader binary. 1595</p> 1596<h3 id="note_15-G34">Note 15-G34: (Shader) [Important] Changed the index order of the floating point constant registers for nwgfx_DefaultShader and nwgfx_ParticleDefaultShader</h3> 1597<p>When re-using a command created for the left eye with the right eye in the case of a stereo display, the values set by the graphics library for the shader's view matrix and projection matrix could be used as-is without overwriting them. However, the value of the constant register would sometimes be corrupted when using a geometry shader. 1598</p> 1599<p>To avoid this, the order of constant registers for nwgfx_DefaultShader and nwgfx_ParticleDefaultShader was changed. Users who create custom shaders must accommodate this change in register numbers. 1600</p> 1601<ul><li>Changed ProjMtx (c0-c3) to (c86-c89) 1602</li> 1603<li>Changed ViewMtx (c4-c6) to (c90-c92) 1604</li> 1605<li>Changed WrldMtx (c7-c9) to (c0-c2) 1606</li> 1607<li>Changed PosOffs (c10) to (c6) 1608</li> 1609<li>Changed IrScale (c11-c13) to (c7-c9) 1610</li> 1611<li>Changed TexcMap (c14) to (c10) 1612</li> 1613<li>Changed TexMtx0 (c15-c17) to (c11-c13) 1614</li> 1615<li>Changed TexMtx1 (c18-c20) to (c14-c16) 1616</li> 1617<li>TexMtx2 (c21-c23) ⇒ (c17-c19) に変更 1618</li> 1619<li>NormMtx (c24-c26) ⇒ (c3-c5) に変更 1620</li> 1621<li>MatAmbi (c27) ⇒ (c20) に変更 1622</li> 1623<li>MatDiff (c28) ⇒ (c21) に変更 1624</li> 1625<li>HslGCol (c29) ⇒ (c22) に変更 1626</li> 1627<li>HslSCol (c30) ⇒ (c23) に変更 1628</li> 1629<li>HslSDir (c31) ⇒ (c24) に変更 1630</li> 1631<li>UnivReg (c32-c91) ⇒ (c25-c84) に変更 1632</li> 1633</ul> 1634<h3 id="note_15-G35">Note 15-G35: (Demo) Fixed a bug where reflection of skeletal animation was being delayed by one frame</h3> 1635<p>A bug was fixed with AnimationDemo where models from one frame ago were being rendered. Models were being shown in their bind pose in the first frame. 1636</p> 1637<h3 id="note_15-G36">Note 15-G36: (Demo) Added a practical particle demo</h3> 1638<p>ParticleApplicationDemo was added as a practical model. Along with this addition, a class for particles was added to the demo library. 1639</p> 1640<h3 id="note_15-G37">Note 15-G37: (Demo) Changed the demo program pad</h3> 1641<ul><li>The demo pad (Demo::Pad) was changed and demo::PadFactory for creating demo pads was added. 1642</li> 1643</ul> 1644<h3 id="note_15-G38">Note 15-G38: (Demo) Added a feature for controlling the demo program camera using the pad</h3> 1645<p>A similar feature implemented in a NintendoWare for Revolution demo program was ported. The operation method is output in the debug log. 1646</p> 1647<h3 id="note_15-G39">Note 15-G39: (Demo) Added a user shader sample</h3> 1648<p>A user shader sample was added to SampleData\Graphics\Shader\UserShader. Refer to this sample if you are customizing a shader. 1649</p> 1650<h3 id="note_15-G40">Note 15-G40: (Converter) Specifications were changed so a warning is issued if the --auto_create_shader=on/off option is not included</h3> 1651<p>Specifications have been changed so a warning is displayed if --auto_create_shader=[on/off] is not specified when outputting binary data using NW4C_CreativeStudioConsole.exe. To get rid of this warning, either forcibly include the default shader in the binary or explicitly specify the --auto_create_shader command argument. 1652</p> 1653<h3 id="note_15-G41">Note 15-G41: (Converter) Fixed a bug where conversion results were being handled incorrectly as "successful"</h3> 1654<p>A bug was fixed where, if more than one input file was specified for NW4C_CreativeStudioConsole.exe, loading of files was handled as successful if any of the files loaded successfully, even though others may have failed to load. 1655</p> 1656<h3 id="note_15-G42">Note 15-G42: (Simple Actual Hardware Viewer) Support for loading cameras and camera animations</h3> 1657<p>Only LookAt type cameras can be controlled by pad input. However, they cannot be controlled during animation playback. 1658</p> 1659<h3 id="note_15-G43">Note 15-G43: (Simple Actual Hardware) Improved communication features</h3> 1660<p>A bug was fixed where transfer of data from CreativeStudio to Viewer would frequently fail. 1661</p> 1662<h3 id="note_15-G44">Note 15-G44: (Simple Actual Hardware Viewer) Added a feature for outputting file paths</h3> 1663<p>When reloading files, the path to the loaded file is output to the debugger. 1664</p> 1665<h2 id="version_0_7_4">Changes in 0.7.4</h2> 1666<h3 id="note_14-G01">Note 14-G01: (Library) Specifications have been changed so that unused texture units are disabled during rendering</h3> 1667<p>Up to this version, even unused texture units were enabled during rendering. However, due to this fact, there was the possibility that a hardware bug when using multi-textures for L4 or A4 textures might occur only with multi-textures. Usage restrictions beyond the hardware limitations no longer apply now that unused texture units are correctly disabled. Depending on the situation, fill performance for materials having only one or two textures may be improved. 1668</p> 1669<h2 id="version_0_7_2">Changes in 0.7.2</h2> 1670<h3 id="note_12-G01">Note 12-G01: (Library) Fixed bug where internal vertex attributes were not being set correctly</h3> 1671<p>A bug was fixed where internal vertex attributes of the gfx shader were not being set correctly when the shader had been switched. 1672</p> 1673<h3 id="note_12-G02">Note 12-G02: (Library) Corrected calculations for textures and material hashes in the fragment lighting table</h3> 1674<p>A bug was fixed where the same texture in the same material (or the hash value when a table was specified) was not being correctly calculated. 1675</p> 1676<h3 id="note_12-G03">Note 12-G03: (Library) Fixed a bug where small version release builds would stop at runtime</h3> 1677<h2 id="version_0_7_1">Changes in 0.7.1</h2> 1678<h3 id="note_11-G01">Note 11-G01: (Library) Changed specifications so that the particle double buffer is swapped explicitly by the API</h3> 1679<p>Buffers used to be swapped inside ParticleSceneUpdater::UpdateNode, but this is now handled by an explicit API function call for more flexible functionality. Call ParticleSceneUpdater::SwapBuffer after render command creation. Note that the definition of enum ParticleBuffer has changed. If you have been using PARTICLE_BUFFER_{CALC,DRAW}, be sure to replace it with PARTICLE_BUFFER_{FRONT,BACK}. 1680</p> 1681<h3 id="note_11-G02">Note 11-G02: (Library) Fixed a bug with particle Y-axis billboards</h3> 1682<h3 id="note_11-G03">Note 11-G03: (Library) Fixed shortcomings of particle-related API functions</h3> 1683<p>ParticleSet::ClearParticleCollection used to be protected but has been changed to public. The ParticleEmitter::Reset function was added. 1684</p> 1685<h3 id="note_11-G04">Note 11-G04: (Library) Corrected a problem with cube maps</h3> 1686<p>A problem was corrected with the display of cube maps by the library. 1687</p> 1688<h3 id="note_11-G05">Note 11-G05: (Library) Added sample demos</h3> 1689<p>The following demos have been added. 1690</p> 1691<ul><li>MultiModelDemo (demo that mixes 3D models and particles) 1692</li> 1693<li>ParticleUpdaterDemo (demo that performs user-defined animation for particles) 1694</li> 1695<li>ParticleRecycleDemo (demo that excludes particles from a scene and then uses them again) 1696</li> 1697<li>ParticleChokeDemo (demo that stops particle emission and checks that particles disappear) 1698</li> 1699</ul> 1700<h3 id="note_11-G06">Note 11-G06: (Library) Abolished LookupTableCache and added a lookup table cache structure that meets hardware specifications</h3> 1701<p>Along with command cache support, the LookupTableCache class was abolished. A lookup table cache conforming to hardware specifications is now implemented using SetLookUp table of the RenderState class. 1702</p> 1703<h3 id="note_11-G07">Note 11-G07: (Library) Added utilities for textures and setting the VBO load location to ResGraphicsFile</h3> 1704<p>ForeachTexture, ForeachIndexStream, and ForeachVertexStream were added to ResGraphicsFile. TextureLocationFlagSetter, IndexStreamLocationFlagSetter, and VertexStreamLocationFlagSetter were also added. Code like that given below can be used to change the location that textures are loaded. graphicsFile.ForeachTexture(nw::gfx::TextureLocationFlagSetter(NN_GX_MEM_VRAMA | GL_NO_COPY_FCRAM_DMP)); 1705</p> 1706<h3 id="note_11-G08">Note 11-G08: (Library) Fixed a bug with LINEAR_MIPMAP_LINEAR</h3> 1707<p>A bug was fixed where NEAREST_MIPMAP_NEARSET would result for rendering if the compression filter setting was LINEAR_MIPMAP_LINEAR. 1708</p> 1709<h3 id="note_11-G09">Note 11-G09: (Converter) Changed behavior when --auto_create_shader=on</h3> 1710<p>The default shader was not being automatically attached up to this version if more than one shader binaries were included in a target file when converting using NW4C_CreativeStudioConsole.exe with --auto_create_shader=on. This specification has been changed so that nwgfx_DefaultShader and nwgfx_ParticleDefaultShader are always attached when --auto_create_shade4r=on has been specified. 1711</p> 1712<h3 id="note_11-G10">Note 11-G10: (Library) Added a class for creating instances of ResSceneObject</h3> 1713<p>Currently, when creating scene objects with SceneObject::Builder, duplicate child layer objects are created when a model has a hierarchical structure. The SceneObjectFactor class for creating scene objects and SceenTreeHelper for resolving tree structure references have been added to avoid this. 1714</p> 1715<h3 id="note_11-G11">Note 11-G11: (Documentation) Added a FAQ regarding gfx library particles</h3> 1716<p>A particle FAQ was added to NintendoWare\CTR\documents\Graphics\ParticleFAQ.pdf. This can also be found through links to the document library. 1717</p> 1718<h3 id="note_11-G12">Note 11-G12: (Library) Added a workaround for avoiding compile bugs with SceneTreeDemo</h3> 1719<p>Optimization options using #pragma have been changed only fa resulting in the bug. 1720</p> 1721<h3 id="note_11-G13">Note 11-G13: (Library) Added a GPU load meter to the demo library</h3> 1722<p>The GPU load meter displayed is not entirely accurate and should be used for reference purposes only. 1723</p> 1724<h2 id="version_0_7_0">Changes in 0.7.0</h2> 1725<h3 id="note_10-G01">Note 10-G01: (Library) Changed specifications so use of the command cache is enabled by default</h3> 1726<h3 id="note_10-G02">Note 10-G02: (Library) With command cache support, C++ library operations on a PC have been changed to not supported</h3> 1727<h3 id="note_10-G03">Note 10-G03: (Library) Specifications have changed so that RenderContext::ResetState does not call GX_BeforeRender(GX_LCD_TYPE_UP)</h3> 1728<h3 id="note_10-G04">Note 10-G04: (Library) Optimized the material update process</h3> 1729<p>The MaterialProxy class was abolished and IMaterialActivator was added. Material settings are no longer made when consecutively setting the same instance of a material. 1730</p> 1731<h3 id="note_10-G05">Note 10-G05: (Library) Changed specifications so that lookup table setup is performed by ResLookupTable::Setup</h3> 1732<p>Lookup table setup that used to be performed at runtime is now performed during resource setup. With this change, texture objects are now resolved by ResLookupTable::Cleanup. 1733</p> 1734<h3 id="note_10-G06">Note 10-G06: (Library) Abolished the Shader class</h3> 1735<p>The Shader class has been abolished. ResShader is now used directly. Also, the ShaderProgram class has been moved from Material to RenderContext. 1736</p> 1737<h3 id="note_10-G07">Note 10-G07: (Library) Support for user-defined geometry shaders</h3> 1738<h3 id="note_10-G08">Note 10-G08: (Library) Fixed a bug where the position of scaled bones was not being displayed correctly</h3> 1739<h3 id="note_10-G09">Note 10-G09: (Library) Fixed a bug where animations with a negative value set for StartFrame could not be played</h3> 1740<h3 id="note_10-G10">Note 10-G10: (Demo) Stereo display support</h3> 1741<p>The roles of RenderScene and SwapBuffer in the demo library have been reviewed now that stereo display is supported. SubmitView, used for camera-dependent processes has been split off from RenderScene so that RenderQueue can be created for any camera. Also, detailed specifications are now possible for Swap in the demo library. With this change, you now need to call WaitCommandList, SwapBuffer and WaitVSync separately from application instead of the conventional SwapBuffer. For details, see StereoDisplayDemo. 1742</p> 1743<p>RenderStereoScene creates right and left video by rendering once and then re-using commands. With this, the way the shader's ViewMatrix is handled is different. 1744</p> 1745<h3 id="note_10-G11">Note 10-G11: (Demo) Changed the demo performance indicator</h3> 1746<p>The performance meter has been changed to show values that exclude font rendering and buffer transfer. 1747</p> 1748<h3 id="note_10-G12">Note 10-G12: (Library) Added a post-rendering callback</h3> 1749<h3 id="note_10-G13">Note 10-G13: (Library) Changed specifications so that even if SceneNode is destroyed its children are not destroyed</h3> 1750<p>Destroy branch was added to SceneNode for destroying one's self and all children beneath. 1751</p> 1752<h3 id="note_10-G14">Note 10-G14: (Library) Changed specifications so the SceneNode destructor cancels one's registration for the parent and children</h3> 1753<h3 id="note_10-G15">Note 10-G15: (Library) Changed the RenderState class to internal</h3> 1754<h3 id="note_10-G16">Note 10-G16: (Library) Added a demo that uses only the bottom layer of graphics</h3> 1755<p>LowLayerDemo was added for using only the low layer of graphics. 1756</p> 1757<h3 id="note_10-G17">Note 10-G17: (Library) Optimized render sorting</h3> 1758<p>Specifications have been adjusted so that render elements are arranged to reduce the render processing load. 1759</p> 1760<h3 id="note_10-G18">Note 10-G18: (Library) Support for texture pattern animations</h3> 1761<h3 id="note_10-G19">Note 10-G19: (Library) Support for frame format skeletal animation data</h3> 1762<h3 id="note_10-G20">Note 10-G20: (Library) Prohibited overwriting by getting references to FloatColor, VEC3, VEC2 and Rect resource class members</h3> 1763<p>Now that a command cache is used, the FloatColor, VEC3, VEC2 and Rect resource class members must be set using a Set accessor. Also, a command is now created by making settings using a Set accessor even when setting some materials. 1764</p> 1765<h3 id="note_10-G21">Note 10-G21: (Shader Binary Swap Script) Added a script for swapping the binary parts of shaders in existing intermediate files</h3> 1766<h3 id="note_10-G22">Note 10-G22: (Shader) Changed swizzle inversion for vertex shaders</h3> 1767<p>Swizzle inversion of shaders by having the CPU invert xyzw is not longer required. 1768</p> 1769<h3 id="note_10-G23">Note 10-G23: (Library) Added SceneInitializer and IMaterialIdGenerator</h3> 1770<p>A class was added for calculating material IDs from the ResMaterial hash. Materials can be updated more efficiently by sorting using this class. Settings to the scene tree can be made using SceneInitializer. 1771</p> 1772<h3 id="note_10-G24">Note 10-G24: (Simple Actual Hardware Viewer) Added a reload feature and NWCS target preview feature</h3> 1773<p>A binary file reload feature has been added. A target preview feature has also been added for receiving notifications of binary output from NWCS and reloading data. 1774</p> 1775<h3 id="note_10-G25">Note 10-G25: (Manual) Added descriptions to the reference manual</h3> 1776<p>An Introduction page was added along with a description of dependencies among modules. A Scene Tree page was added along with simple class diagrams for the scene tree and tables for comparison to NW4R. A Rendering and Coordinate Systems page was added along with descriptions of coordinate systems used during rendering. 1777</p> 1778<h3 id="note_10-G26">Note 10-G26: (Library) Added the DetachAllChildren method to the SceneNode class</h3> 1779<h3 id="note_10-G27">Note 10-G27: (Simple Actual Hardware Viewer) Changed specifications so that the ULCD display is farther back in the screen</h3> 1780<h3 id="note_10-G28">Note 10-G28: (Shader) Split the shader into a shader for particle rendering and a shader especially for particles</h3> 1781<p>The shader for particle rendering is now dedicated. When using particles, be sure to use nwgfx_ParticleDefaultShader.csdr. When --auto_create_shader=on is specified as a converter option, data is created in combination with the default shader for particles. 1782</p> 1783<h3 id="note_10-G29">Note 10-G29: (Library) Added a user-defined updater to particle updaters</h3> 1784<h3 id="note_10-G30">Note 10-G30: (Library) Added API functions for clearing particle collection</h3> 1785<p>Particle::Clear() and ParticleSet::ClearParticleCollection() 1786</p> 1787<h3 id="note_10-G31">Note 10-G31: (Library) Replaced particle time controls with AnimFrameController</h3> 1788<p>Related APIs: ParticleEmitter::UpdateParticleFrame(), ParticleEmitter::ParticleAnimFrameController(), ParticleModel::UpdateParticleFrame(), ParticleModel::ParticleAnimFrameController() 1789</p> 1790<h3 id="note_10-G32">Note 10-G32: (Library) Fixed the bias in random numbers for particles</h3> 1791<h3 id="note_10-G33">Note 10-G33: (Library) Fixed a bug in demos and other source code where models were not being displayed until fonts were displayed</h3> 1792<h3 id="note_10-G34">Note 10-G34: (Converter) Corrected LUT scale value conversion</h3> 1793<p>A bug was fixed where the correct scale value did not result when the LUT scale was 0.5 or 0.25. Since this problem affects binaries, reconversion is required. 1794</p> 1795<h3 id="note_10-G35">Note 10-G35: (Library) Added a depth buffer format to IRenderTarget::Builder</h3> 1796<p>The DepthFormat function was added to IRenderTarget::Builder for specifying the depth buffer format. With this addition, the name of the API function for specifying the color buffer format has been changed from Format to ColorFormat. Names have changed in each demo program to reflect this. 1797</p> 1798<h3 id="note_10-G36">Note 10-G36: (Library) Added the RenderEnvironment class</h3> 1799<p>A RenderEnvironment class that includes a render environment for lights and fogs managed by RenderContext has been added. A specification such as SetFragmentLightsDirty must be made for this class when changing things like lights using a callback. 1800</p> 1801<h3 id="note_10-G37">Note 10-G37: (Library) Revised the command setting for the light enable flag</h3> 1802<p>This revision concerns a problem where lighting was strange. 1803</p> 1804<h3 id="note_10-G38">Note 10-G38: (Library) Added an allocator setting to CommandCacheManager</h3> 1805<p>The nw::gfx::CommandCacheManager class has been added. An allocator must be set using the SetAllocator method before using the graphics library. 1806</p> 1807<h3 id="note_10-G39">Note 10-G39: (Library) Added a gl management region setting to the GISystem::SetGIShManager function</h3> 1808<p>Memory required by the allocator from gl when using nngxInitialize must be set for nn::gx::GlSystem::SetGlShManager. Be sure to set memory equal in size to GlSystem::SHADER_MANAGER_BUFFER_SIZE for the GlSystem. 1809</p> 1810<h3 id="note_10-G40">Note 10-G40: (Library) Abolished the swizzling restriction when coding custom shaders for the command cache</h3> 1811<p>The requirement that vertex uniform xyzw must be swizzled to xzyx within the shader when creating a user shader has been abolished in the command cache support evaluation release. 1812</p> 1813<h2 id="version_0_6_0">Changes in 0.6.0</h2> 1814<h3 id="note_07-G01">Note 07-G01: (Library) Fixed a bug where sorting of meshes in the same model was not being performed correctly for Z sort</h3> 1815<h3 id="note_07-G02">Note 07-G02: (Library_ Changed the name RenderingOrder to TranslucencyKind</h3> 1816<h3 id="note_07-G03">Note 07-G03: (Library) Added priority to the arguments of RenderQueue::EnqueueCommand</h3> 1817<h3 id="note_07-G04">Note 07-G04: (Library) Fixed a bug where cube maps and sphere maps could not be displayed correctly</h3> 1818<h3 id="note_07-G05">Note 07-G05: (Library) Support for fragment light point lights and spotlights</h3> 1819<h3 id="note_07-G06">Note 07-G06: (Library) Support for vertex lights</h3> 1820<h3 id="note_07-G07">Note 07-G07: (Library) Changed specifications so that fogs can be enabled/disabled per material</h3> 1821<h3 id="note_07-G08">Note 07-G08: (Library) Changed names from maestro table to lookup table</h3> 1822<p>With this change, the MaestroTableCache/ResMaestroTable classes have been renamed LookupTableCache/ResLookupTable. 1823</p> 1824<h3 id="note_07-G09">Note 07-G09: (Library) Added lookup table sets</h3> 1825<p>A change has been made from a format where lighting-related lookup tables directly maintain materials or lights to a format that can be shared in common as a lookup table set. 1826</p> 1827<h3 id="note_07-G10">Note 07-G10: (Library) Added a macro for measuring the process load in the library</h3> 1828<p>The profile in the library can be enabled by defining NW_PROFILE_ENABLED in dev_Config.h. 1829</p> 1830<h3 id="note_07-G11">Note 07-G11: (Demo) Support for load measurements split between the CPU and GPU in demos</h3> 1831<p>Each process load can be displayed separately by defining DEMO_GPU_PROFILE_ENABLED in demo_GraphicsSystem.h. 1832</p> 1833<h3 id="note_07-G12">Note 07-G12: (Library) Changed specifications so that projection map matrices are calculated by CameraProjectionUpdater</h3> 1834<p>A matrix for projection has been added to the arguments for the Update method of CameraProjectionUpdater. 1835</p> 1836<h3 id="note_07-G13">Note 07-G13: (Library) Changed animation resources to a list by type</h3> 1837<p>Changed ResGraphicsFile animations to a list by type. Be sure to revise code to use GetSkeletalAnims in place of GetAnims(). 1838</p> 1839<h3 id="note_07-G14">Note 07-G14: (Library) Changed skeleton calculations so that world coordinates or model coordinates can be selected</h3> 1840<p>Note that specifications have changed so that calculations are made using world coordinates by default. To calculate in model coordinates, specify FLAG_MODEL_COORDINATE in Flags of ResSkeleton. 1841</p> 1842<h3 id="note_07-G15">Note 07-G15: (Library) Fixed a bug related to particles</h3> 1843<p>A bug was fixed where there were leaks when freeing ParticleShape resources. 1844</p> 1845<h3 id="note_07-G16">Note 07-G16: (Library) Made particles faster</h3> 1846<h3 id="note_07-G17">Note 07-G17: (Library) Cleaned up particle-related API functions and member variables</h3> 1847<p>Capacity, used with ResParticleShape and ParticleShape, has been deleted. Time-related parameters have been standardized as f32 types. References are now resolved outside the library. (See ParticleDemo.) 1848</p> 1849<h3 id="note_07-G18">Note 07-G18: (Simple GraphicsViewer) Support for particles</h3> 1850<h3 id="note_07-G19">Note 07-G19: (Library) Support for models and mesh visibility animation</h3> 1851<h3 id="note_07-G20">Note 07-G20: (Library) Changed code for converting from lookup table curves to tables</h3> 1852<p>This has been changed so the table created differs depending on the IsAbs flag. 1853</p> 1854<h2 id="version_0_5_1">Changes in 0.5.1</h2> 1855<h3 id="note_06-G01">Note 06-G01: (Library) Revised the constructor argument MoveArray when dynamically allocating memory</h3> 1856<h3 id="note_06-G02">Note 06-G02: (Library) Fixed a bug where fragment light point light sources were parallel light sources</h3> 1857<h3 id="note_06-G03">Note 06-G03: (Library) Fixed the formula for calculating the camera view clip mid-point</h3> 1858<h3 id="note_06-G04">Note 06-G04: (Library) Fixed a bug where the display was not correct if the quantization option for vertex attributes was other than a float</h3> 1859<h3 id="note_06-G05">Note 06-G05: (Library) Fixed bugs related to particles</h3> 1860<ul><li>A bug was fixed where texture coordinate calculations differed from CreativeStudio. 1861</li> 1862<li>A bug was fixed where the result of applying randomness to initial velocity differed from CreativeStudio. 1863</li> 1864<li>Made a change so that the position at which point-shaped emitters are generated differs from the origin by a minute value. 1865</li> 1866<li>A bug with RotateUpVectorUpdater was fixed. 1867</li> 1868<li>A bug was fixed where only Z-axis rotation could be used for Y-axis billboards. 1869</li> 1870</ul> 1871<h2 id="version_0_5_0">Changes in 0.5.0</h2> 1872<h3 id="note_05-G01">Note 05-G01: (Library) Fixed bug in animations</h3> 1873<p>A big was fixed where scale animations were sometimes not played correctly in the case of skeletal animations. 1874</p> 1875<h3 id="note_05-G02">Note 05-G02: (Library) Fixed bugs related to particles</h3> 1876<ul><li>A bug was fixed where an assert would result when the number of particles reached about half the upper limit. 1877</li> 1878<li>A bug was fixed where many particles were emitted in the start frame. 1879</li> 1880<li>A memory deallocation process was implemented 1881</li> 1882</ul> 1883<h3 id="note_05-G03">Note 05-G03: (Library) Fixed bugs with fogs</h3> 1884<h3 id="note_05-G04">Note 05-G04: (Library) Changed the function for setting the camera updater</h3> 1885<p>Now that the camera updater is created from resources, setup functions such as SetAspectRatio have been deleted. Functions for getting resources have been added in their place, so be sure to change code to get resources. For details, see the code for creating a camera updater in SimpleDemo. 1886</p> 1887<h3 id="note_05-G05">Note 05-G05: (Library) Added a render queue</h3> 1888<p>Render order can now be sorted based on materials or depth data. 1889</p> 1890<h3 id="note_05-G06">Note 05-G06: (Library) Added hemispherical lighting</h3> 1891<h3 id="note_05-G07">Note 05-G07: (Library) Support for loading cameras from resources</h3> 1892<h3 id="note_05-G08">Note 05-G08: (Library) Changed the name of some classes</h3> 1893<p>typedefs are used so that old names can still be used for awhile. Plans call for abolishing old names in the next release. 1894</p> 1895<ul><li>ICameraProjectionUpdater → CameraProjectionUpdater 1896</li> 1897<li>ICameraViewUpdater → CameraViewUpdater 1898</li> 1899<li>ISkeleton → Skeleton 1900</li> 1901</ul> 1902<h3 id="note_05-G09">Note 05-G09: (Library) Changed specifications for callbacks</h3> 1903<ul><li>A signal class is now used. 1904</li> 1905<li>Callback names have been cleaned up. 1906</li> 1907<li>Callbacks before and after bone matrix calculation have been added. 1908</li> 1909</ul> 1910<h3 id="note_05-G10">Note 05-G10: (Library) Added particle feature support</h3> 1911<p>The particle feature added to CreativeStudio is now supported. 1912</p> 1913<h3 id="note_05-G11">Note 05-G11: (Demo) Changed specifications so that demo resources are created with omake</h3> 1914<p>omake must be executed before running a PC version demo. 1915</p> 1916<h3 id="note_05-G12">Note 05-G12: (Demo) Added a resource demo</h3> 1917<h3 id="note_05-G13">Note 05-G13: (Library) Added ASSERT for texture formats not supported by TEG</h3> 1918<ul><li>Specifications have changed so that execution stops on an ASSERT if an unsupported texture format is used when the target is TEG. 1919</li> 1920</ul> 1921<h3 id="note_05-G14">Note 05-G14: (Library) Added vertex color scale to material color</h3> 1922<ul><li>Specifications have changed so that vertex color scale is now stored in the ambient alpha element of a material color. 1923</li> 1924</ul> 1925<h2 id="version_0_4_1">Changes in 0.4.1</h2> 1926<h3 id="note_04-G01">Note 04-G01: (Library) Fixed a memory resource leak</h3> 1927<h3 id="note_04-G02">Note 04-G02: (Library) Renamed the ResPixelBasedTexture::GetType and ResShaderParameterValue::GetType functions</h3> 1928<ul><li>The function name ResPixelBasedTexture::GetType was changed to GetFormatType. 1929</li> 1930<li>The function name ResShaderParameterValue::GetType was changed to GetUniformType. 1931</li> 1932</ul> 1933<h3 id="note_04-G03">Note 04-G03: (Library) Changed the binary format of ResMaestroTable</h3> 1934<ul><li>The binary format of ResMaestroTable was changed. Along with this, binary version information was updated. 1935</li> 1936</ul> 1937<h3 id="note_04-G04">Note 04-G04: (Simple GraphicsViewer) Support for material animations</h3> 1938<ul><li>The simple GraphicsViewer has been updated so that one material animation can be configured. 1939</li> 1940</ul> 1941<h2 id="version_0_4_0">Changes in 0.4.0</h2> 1942<h3 id="note_03-G01">Note 03-G01: (Library) Added support for TS version PODs</h3> 1943<h3 id="note_03-G02">Note 03-G02: (Library) Added support for particles</h3> 1944<ul><li> Support was added for actual hardware (TEG2). 1945</li> 1946<li> A particle demo has been added. 1947</li> 1948</ul> 1949<h3 id="note_03-G03">Note 03-G03: (Library) Added support for user shaders</h3> 1950<ul><li> Shader management has changed. Shader binaries are not managed as .cmdl or .csdr NW4C resource files as standard. 1951</li> 1952</ul> 1953<h3 id="note_03-G04">Note 03-G04: (Library) Added a feature for selecting the memory location for textures and vertex objects</h3> 1954<h3 id="note_03-G05">Note 03-G05: (Library) Expanded the scene tree</h3> 1955<ul><li> Support for cameras and fogs was added. 1956</li> 1957<li> A skeleton class was added. 1958</li> 1959<li> Bone billboards are now supported. 1960</li> 1961<li> A feature for skipping world matrix calculations was added. 1962</li> 1963<li> Support was added materials and meshes. (Mid-implementation version) 1964</li> 1965<li> Support was added for a mesh visibility flag. 1966</li> 1967<li> Scene node children can now be obtained. 1968</li> 1969</ul> 1970<h3 id="note_03-G06">Note 03-G06: (Library) Expanded materials</h3> 1971<ul><li> Support was added for cube environments, sphere environments, and projection mapping. 1972</li> 1973<li> Support was added for mapping. 1974</li> 1975<li> A feature for selecting texture coordinate input was added. 1976</li> 1977</ul> 1978<h3 id="note_03-G07">Note 03-G07: (Library) Added support for material animations</h3> 1979<ul><li> Support was added for material color and texture coordinate animations. 1980</li> 1981</ul> 1982<h2 id="version_0_2_1">Changes in 0.2.1</h2> 1983<h3 id="note_01-G01">Note 01-G01: (Library) Support for actual hardware (TEG2)</h3> 1984<h3 id="note_01-G02">Note 01-G02: (Library) Added a simple graphics viewer</h3> 1985<ul><li> gfxviewer was added. 1986</li> 1987</ul> 1988<h3 id="note_01-G03">Note 01-G03: (Library) Expanded the scene tree</h3> 1989<ul><li> Support was added for dynamically creating scene nodes and transform nodes. 1990</li> 1991<li> Support was added for fragment lights. 1992</li> 1993<li> Support was added for dynamically creating fragment lights. 1994</li> 1995<li> Support was added for a callback feature. 1996</li> 1997</ul> 1998 1999 2000<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> 2001 2002<hr><p>CONFIDENTIAL</p></body> 2003</html> 2004