2012-09-28 00:43:51 +08:00
|
|
|
<?xml version='1.0' encoding='utf-8'?>
|
|
|
|
|
|
|
|
<!-- Stylesheet to upgrade from Mitsuba version 0.3.x to 0.4.0 scenes -->
|
|
|
|
|
|
|
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
|
2017-07-29 08:17:21 +08:00
|
|
|
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
|
|
|
|
<xsl:preserve-space elements="*"/>
|
|
|
|
|
|
|
|
<!-- Update the scene version -->
|
|
|
|
<xsl:template match="scene/@version">
|
|
|
|
<xsl:attribute name="version">0.4.0</xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Cameras have been renamed to sensors -->
|
|
|
|
<xsl:template match="camera">
|
|
|
|
<sensor>
|
|
|
|
<xsl:apply-templates select="@*"/>
|
|
|
|
|
|
|
|
<!-- Handle the mapSmallerSide parameter -->
|
|
|
|
<xsl:if test="@type='perspective'">
|
|
|
|
<string name="fovAxis">
|
|
|
|
<xsl:attribute name="value">
|
|
|
|
<xsl:choose>
|
|
|
|
<xsl:when test="boolean[@name='mapSmallerSide' and @value='false']">
|
|
|
|
<xsl:text>larger</xsl:text>
|
|
|
|
</xsl:when>
|
|
|
|
<xsl:otherwise>
|
|
|
|
<xsl:text>smaller</xsl:text>
|
|
|
|
</xsl:otherwise>
|
|
|
|
</xsl:choose>
|
|
|
|
</xsl:attribute>
|
|
|
|
</string>
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
<xsl:apply-templates select="node()[not(@name) or @name!='mapSmallerSide']"/>
|
|
|
|
</sensor>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Fix the handedness yet once more.. -->
|
|
|
|
<xsl:template match="camera/transform[@name='toWorld']">
|
|
|
|
<transform>
|
|
|
|
<xsl:apply-templates select="@*"/>
|
|
|
|
<scale x="-1"/>
|
|
|
|
<xsl:apply-templates select="node()"/>
|
|
|
|
</transform>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Rename the 'intensity' parameter of certain luminaires to 'radiance' -->
|
|
|
|
<xsl:template match="luminaire[@type='area' or @type='constant']/node()[@name='intensity']/@name">
|
|
|
|
<xsl:attribute name="name">radiance</xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Update the 'intensity' parameter of directional light sources -->
|
|
|
|
<xsl:template match="luminaire[@type='directional']/node()[@name='intensity']/@name">
|
|
|
|
<xsl:attribute name="name">irradiance</xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Rename the luminaireSamples parameter of the direct sampling strategy -->
|
|
|
|
<xsl:template match="integrator/node()[@name='luminaireSamples']/@name">
|
|
|
|
<xsl:attribute name="name">emitterSamples</xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Rename the depth parameter of samplers -->
|
|
|
|
<xsl:template match="sampler/node()[@name='depth']/@name">
|
|
|
|
<xsl:attribute name="name">dimension</xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Update the name of the errctrl plugin -->
|
|
|
|
<xsl:template match="integrator[@type='errctrl']/@type">
|
|
|
|
<xsl:attribute name="type">adaptive</xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Update the name of the exrfilm plugin -->
|
|
|
|
<xsl:template match="film[@type='exrfilm']/@type">
|
|
|
|
<xsl:attribute name="type">hdrfilm</xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Translate the 'alpha' parameter in the old films -->
|
|
|
|
<xsl:template match="film/boolean[@name='alpha']">
|
|
|
|
<xsl:choose>
|
|
|
|
<xsl:when test="@value='true'">
|
|
|
|
<string name="pixelFormat" value="rgba"/>
|
|
|
|
</xsl:when>
|
|
|
|
<xsl:otherwise>
|
|
|
|
<string name="pixelFormat" value="rgb"/>
|
|
|
|
</xsl:otherwise>
|
|
|
|
</xsl:choose>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Update the name of the pngfilm plugin -->
|
|
|
|
<xsl:template match="film[@type='pngfilm']/@type">
|
|
|
|
<xsl:attribute name="type">ldrfilm</xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Update the 'focusDepth' attribute name -->
|
|
|
|
<xsl:template match="float[@name='focusDepth']/@name">
|
|
|
|
<xsl:attribute name="name">focusDistance</xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Update the 'intensityScale' attribute name -->
|
|
|
|
<xsl:template match="float[@name='intensityScale']/@name">
|
|
|
|
<xsl:attribute name="name">scale</xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Update the 'densityMultiplier' attribute name -->
|
|
|
|
<xsl:template match="float[@name='densityMultiplier']/@name">
|
|
|
|
<xsl:attribute name="name">scale</xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Update the blackbody 'multiplier' attribute name -->
|
|
|
|
<xsl:template match="blackbody/@multiplier">
|
|
|
|
<xsl:attribute name="scale"><xsl:value-of select="."/></xsl:attribute>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Luminaires have been renamed to emitters -->
|
|
|
|
<xsl:template match="luminaire">
|
|
|
|
<emitter>
|
|
|
|
<xsl:apply-templates select="@*|node()"/>
|
|
|
|
</emitter>
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
<!-- Default copy rule -->
|
|
|
|
<xsl:template match="@*|node()">
|
|
|
|
<xsl:copy>
|
|
|
|
<xsl:apply-templates select="@*|node()"/>
|
|
|
|
</xsl:copy>
|
|
|
|
</xsl:template>
|
2012-09-28 00:43:51 +08:00
|
|
|
</xsl:stylesheet>
|