<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>2227-1899</journal-id>
<journal-title><![CDATA[Revista Cubana de Ciencias Informáticas]]></journal-title>
<abbrev-journal-title><![CDATA[Rev cuba cienc informat]]></abbrev-journal-title>
<issn>2227-1899</issn>
<publisher>
<publisher-name><![CDATA[Editorial Ediciones Futuro]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S2227-18992016000300006</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[A-PIT: Estructura de Subdivisión Espacial Aceleración de Raytracing en GPU]]></article-title>
<article-title xml:lang="en"><![CDATA[A-PIT: Spatial Subdivision Structure for Raytracing Acceleration on GPU]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Le&#8217;Clerc Arrastia]]></surname>
<given-names><![CDATA[Jean]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Piad Morffis]]></surname>
<given-names><![CDATA[Alejandro]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Leonard Méndez]]></surname>
<given-names><![CDATA[Ludwig]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad de La Habana Facultad de Matemática y Computación ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>09</month>
<year>2016</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>09</month>
<year>2016</year>
</pub-date>
<volume>10</volume>
<numero>3</numero>
<fpage>71</fpage>
<lpage>87</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_arttext&amp;pid=S2227-18992016000300006&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_abstract&amp;pid=S2227-18992016000300006&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_pdf&amp;pid=S2227-18992016000300006&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[RESUMEN El amplio número de aplicaciones que tiene hoy en día la síntesis digital de imágenes realistas ha estimulado el desarrollo de los medios de cómputo y técnicas algorítmicas empleadas con este fin. El algoritmo raytracing ha sido ampliamente usado en este sentido, fundamentalmente cuando se requiere representar correctamente determinados fenómenos físicos que produce la interacción de la luz con la materia. Su simplicidad y elegancia, permiten simular efectos ópticos como la reflexión, refracción y sombras. La detección del primer objeto intersectado por un rayo, proceso que constituye la base de dicho algoritmo, es computacionalmente costosa y puede consumir fácilmente el 95% del tiempo de renderizado. Producto de esto se han diseñado diversas estructuras de datos que reducen la cantidad de operaciones realizadas en esta tarea. En este trabajo se propone una nueva estructura de datos, denominada A-PIT, diseñada para acelerar las consultas de intersección de rayos en la implementación del algoritmo raytracing en GPU. Se muestra que la utilización de esta estructura de datos en una implementación acumulativa del algoritmo raytracing permite renderizar interactivamente escenas de complejidad media.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[ABSTRACT The digital image synthesis has a broad range of applications, which have stimulated research in hardware and algorithms to this end. The raytracing algorithm has been widely used for this purpose, especially to simulate certain physical phenomena that arise in the interaction between light and matter. Its simplicity and elegance enable the simulation of optical effects such as reflection, refraction and shadows. Detecting the first object that intersects a ray, which is the basis of this algorithm, is a computationally complex operation that can easily consume 95% of rendering time. Hence, several data structures have been designed to reduce the complexity of this operation. This paper proposes a new data structure, the A-PIT, designed to accelerate the ray intersection operation in a GPU implementation of raytracing. We show that using this data structure in an accumulative version of raytracing enables the interactive rendering of scenes of medium complexity.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[raytracing]]></kwd>
<kwd lng="es"><![CDATA[gpu]]></kwd>
<kwd lng="es"><![CDATA[a-buffer]]></kwd>
<kwd lng="es"><![CDATA[interval tree]]></kwd>
<kwd lng="es"><![CDATA[subdivisión]]></kwd>
<kwd lng="en"><![CDATA[raytracing]]></kwd>
<kwd lng="en"><![CDATA[gpu]]></kwd>
<kwd lng="en"><![CDATA[a-buffer]]></kwd>
<kwd lng="en"><![CDATA[interval tree]]></kwd>
<kwd lng="en"><![CDATA[subdivision]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><B>ART&Iacute;CULO  ORIGINAL</B></font></p>     <p>&nbsp;</p>     <p><font size="4"><strong><font face="Verdana, Arial, Helvetica, sans-serif">A-PIT: Estructura de Subdivisi&oacute;n Espacial  Aceleraci&oacute;n de Raytracing en GPU</font></strong></font></p>     <p>&nbsp;</p>     <p><font size="3"><strong><font face="Verdana, Arial, Helvetica, sans-serif">A-PIT:  Spatial Subdivision Structure for Raytracing Acceleration on GPU</font></strong></font></p>     <p>&nbsp;</p>     <p>&nbsp;</p>     <P><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Jean Le&rsquo;Clerc Arrastia<strong><sup>1*</sup></strong>,Alejandro Piad Morffis<strong><sup>1</sup></strong>, Ludwig Leonard M&eacute;ndez</font></strong><font face="Verdana, Arial, Helvetica, sans-serif"><strong><sup>1</sup></strong></font></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><sup>1</sup>Facultad de Matem&aacute;tica y Computaci&oacute;n, Universidad de La Habana. CP.:  10400</font><font size="2"></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">    ]]></body>
<body><![CDATA[<br> </font></p>     <P><font face="Verdana, Arial, Helvetica, sans-serif"><span class="class"><font size="2">*Autor para la correspondencia: </font></span><font size="2"><a href="mailto:leclerc@matcom.uh.cu">leclerc@matcom.uh.cu</a> </font></font>     <p>&nbsp;</p>     <p>&nbsp;</p> <hr>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>RESUMEN</b> </font>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El amplio n&uacute;mero de aplicaciones que tiene hoy en d&iacute;a la s&iacute;ntesis  digital de im&aacute;genes realistas ha estimulado el desarrollo de los medios de  c&oacute;mputo y t&eacute;cnicas algor&iacute;tmicas empleadas con este fin. El algoritmo <em>raytracing</em> ha sido ampliamente usado en  este sentido, fundamentalmente cuando se requiere representar correctamente  determinados fen&oacute;menos f&iacute;sicos que produce la interacci&oacute;n de la luz con la  materia. Su simplicidad y elegancia, permiten simular efectos &oacute;pticos como la  reflexi&oacute;n, refracci&oacute;n y sombras. La detecci&oacute;n del primer objeto intersectado  por un rayo, proceso que constituye la base de dicho algoritmo, es computacionalmente  costosa y puede consumir f&aacute;cilmente el 95% del tiempo de renderizado. Producto  de esto se han dise&ntilde;ado diversas estructuras de datos que reducen la cantidad  de operaciones realizadas en esta tarea. En este trabajo se propone una nueva  estructura de datos, denominada <em>A-PIT</em>,  dise&ntilde;ada para acelerar las consultas de intersecci&oacute;n de rayos en la  implementaci&oacute;n del algoritmo <em>raytracing</em> en GPU. Se muestra que la utilizaci&oacute;n de esta estructura de datos en una  implementaci&oacute;n acumulativa del algoritmo raytracing permite renderizar interactivamente  escenas de complejidad media.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Palabras clave: </span></b>raytracing, gpu, a-buffer, interval tree, subdivisi&oacute;n</font></p> <hr>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>ABSTRACT</span></b> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">The digital image synthesis has a broad range of applications, which  have stimulated research in hardware and algorithms to this end. The raytracing  algorithm has been widely used for this purpose, especially to simulate certain  physical phenomena that arise in the interaction between light and matter. Its  simplicity and elegance enable the simulation of optical effects such as  reflection, refraction and shadows. Detecting the first object that intersects  a ray, which is the basis of this algorithm, is a computationally complex  operation that can easily consume 95% of rendering time. Hence, several data  structures have been designed to reduce the complexity of this operation. This paper proposes a new data structure, the  A-PIT, designed to accelerate the ray intersection operation in a GPU  implementation of raytracing. We show that using this data structure in an  accumulative version of raytracing enables the interactive rendering of scenes  of medium complexity.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Key words: </span></b>raytracing, gpu, a-buffer, interval tree, subdivision</font></p> <hr>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p>&nbsp;</p>     <p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b>INTRODUCCI&Oacute;N</b></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Desde los inicios de la disciplina gr&aacute;ficos por  computadoras, la adecuada modelaci&oacute;n de la inter-acci&oacute;n de la luz con la  materia ha sido un tema de investigaci&oacute;n activo, y a&uacute;n se considera un problema  abierto. La inherente complejidad de los modelos f&iacute;sicos que explican la  distribuci&oacute;n de la luz en la naturaleza, representa un desaf&iacute;o para el c&oacute;mputo  eficiente de las magnitudes involucradas en el c&aacute;lculo de la iluminaci&oacute;n. La  correcta simulaci&oacute;n de estos procesos constituye el objetivo principal de la  s&iacute;ntesis digital de im&aacute;genes realistas; teniendo una amplia gama de  aplicaciones que abarcan desde el dise&ntilde;o asistido por computadora (<em>computer aided design</em>, CAD) y la  visualizaci&oacute;n de procesos cient&iacute;ficos, hasta la industria del entretenimiento.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Este problema se ha enfocado tradicionalmente  en la b&uacute;squeda de aproximaciones num&eacute;ricas a la ecuaci&oacute;n de iluminaci&oacute;n (Kajiya,  1986), la cual describe estos efectos con precisi&oacute;n. La t&eacute;cnica <em>raytracing</em> (Whitted, 1980) representa  uno de los algoritmos m&aacute;s populares y sencillos empleados con este fin,  permitiendo la simulaci&oacute;n de efectos como la reflexi&oacute;n y refracci&oacute;n de <em>Fresnel</em> (Torrance &amp; Sparrow, 1967),  las sombras, y la iluminaci&oacute;n directa. Fue formulado originalmente de manera  recursiva, y se basa en muestrear caminos de luz que llegan al observador. Una  de las principales desventajas que presenta es la cantidad de operaciones que  es necesario realizar para determinar qu&eacute; parte de la escena es intersectada  por un rayo de luz. Este elevado costo computacional, al igual que en otros  similares, ha dificultado su aplicaci&oacute;n en escenarios interactivos. Para  aliviar este problema, se han desarrollado diversas estructuras de datos  buscando acelerar el proceso de intersecci&oacute;n, es decir, reducir el tiempo que esta  toma.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El conjunto de instrucciones disponibles en los  procesadores gr&aacute;ficos (GPU), limita en gran medida su expresividad. El hecho de  solo contemplar instrucciones de salto hacia adelante en el flujo de ejecuci&oacute;n  del programa, y que su modelo de memoria hasta hace poco tiempo era  fundamentalmente de lectura exclusiva y una escritura por p&iacute;xel, lo constatan.  Aunque se han incluido nuevas funcionalidades en estos dispositivos no han sido  suficientes para la implementaci&oacute;n directa de t&eacute;cnicas como <em>raytracing</em>.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Una implementaci&oacute;n de <em>raytracing</em> en GPU requiere de estructuras de aceleraci&oacute;n que permitan realizar consultas  de intersecci&oacute;n de rayos de forma eficiente y f&aacute;cil de implementar. La  estructura de datos <em>A-Buffer</em> (Carpenter,  1984) puede ser implementada en GPU, gracias a las nuevas potencialidades de  hardware para construir una representaci&oacute;n global de la escena en la memoria de  video. Ha sido empleada con &eacute;xito en la generaci&oacute;n de efectos multi-fragmento  tales como la transparencia, con independencia del orden, y el <em>anti-aliasing</em>. Aplicando ciertas  transformaciones, esta estructura puede ser utilizada para realizar consultas  de intersecci&oacute;n de un rayo con la geometr&iacute;a de la escena para rayos no  coherentes con el observador. La presente investigaci&oacute;n surge tras los  resultados obtenidos en la generaci&oacute;n de efectos de iluminaci&oacute;n en espacio de  vista, y la motivaci&oacute;n de formular una estructura de aceleraci&oacute;n basada en el <em>A-Buffer</em> de la cual pueda auxiliarse una  implementaci&oacute;n del algoritmo <em>raytracing</em> en GPU.</font></p>     <p>&nbsp;</p>     <p><strong><font size="3" face="Verdana, Arial, Helvetica, sans-serif">METODOLOG&Iacute;A COMPUTACIONAL</font> </strong></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Iluminaci&oacute;n Global</font></strong> </font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para  generar im&aacute;genes digitales con un alto nivel de realismo es preciso modelar la  iluminaci&oacute;n presente en la escena, bas&aacute;ndose en las leyes f&iacute;sicas que rigen el  transporte de la luz, as&iacute; como su interacci&oacute;n con ciertos materiales.    <br>   La  definici&oacute;n formal del problema de la iluminaci&oacute;n global fue planteada por <em>Kajiya</em> (Kajiya, 1986) con la llamada  ecuaci&oacute;n de iluminaci&oacute;n (<em>rendering  equation</em>, RE). Esta ofrece una descripci&oacute;n generalizada del comportamiento  de la iluminaci&oacute;n en cualquier punto del espacio, asumiendo la ausencia de un  medio de transporte (es decir, los cuerpos observados se encuentran en el  vac&iacute;o).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La ecuaci&oacute;n de iluminaci&oacute;n es: </font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/fo0106316.jpg" alt="fo01" width="376" height="34"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Donde:</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">L<sub>0</sub>(x,w): es la iluminaci&oacute;n observada en el punto x de una superficie en la direcci&oacute;n w.</font> </p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">L<sub>e</sub>(x,w):</font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">es la iluminaci&oacute;n emitida desde el punto</font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif"> x de una superficie en la direcci&oacute;n w.</font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Este t&eacute;rmino no incluye la iluminaci&oacute;n reflejada.</font> </p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">L<sub>i</sub>(x,w): es la iluminaci&oacute;n incidente en el punto x de una superficie desde la direcci&oacute;n w. </font></p>     <p><img src="/img/revistas/rcci/v10n3/fo0206316.jpg" alt="fo02" width="20" height="16"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">es el hemisferio superior orientado alrededor de la normal n de la superficie en el punto x. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">f<sub>r</sub>(x,w',w): es la fracci&oacute;n de luz incidente desde la direcci&oacute;n w' en el punto x que se refleja por la direcci&oacute;n w.Esto se conoce como funci&oacute;n de distribuci&oacute;n de  reflexi&oacute;n bi-direccional (<em>bi-directional  reflectance distribution function</em>, BRDF).</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Intuitivamente, la ecuaci&oacute;n de iluminaci&oacute;n  asevera que la emisi&oacute;n luminosa en el punto x &nbsp;de una  superficie en la direcci&oacute;n w &nbsp;es igual  a la iluminaci&oacute;n emitida por la superficie, sumada a toda la iluminaci&oacute;n  incidente que es reflejada en la direcci&oacute;n w. </font></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Raytracing</font></strong> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><em>Raytracing</em> es un elegante y simple  algoritmo de iluminaci&oacute;n global, que facilita la representaci&oacute;n de sombras y  superficies especulares. Su formulaci&oacute;n se remonta a 1980, cuando <em>Whitted</em> (Whitted, 1980) lo introdujo  como extensi&oacute;n a la t&eacute;cnica <em>raycasting</em>.  El algoritmo consiste en un muestreo puntual de cantidades infinitesimales de  luz que llegan al observador, y se fundamenta en que la luz puede ser  muestreada en sentido inverso, o sea, desde el observador hacia la fuente de  luz. La entrada para el algoritmo consiste en una descripci&oacute;n de la geometr&iacute;a  de la escena (objetos, materiales y fuentes de luz), la posici&oacute;n del observador,  y un plano de imagen que representa la pantalla. El objetivo es calcular el  color final de cada p&iacute;xel en la pantalla, analizando uno o m&aacute;s rayos que parten  del observador y atraviesan la pantalla en el p&iacute;xel correspondiente. Los rayos  que parten del observador son denominados rayos primarios. Para calcular la  iluminaci&oacute;n de un rayo primario con direcci&oacute;n w, se computa la intersecci&oacute;n  m&aacute;s cercana al observador de dicho rayo con la geometr&iacute;a de la escena. En el  punto de intersecci&oacute;n x &nbsp;se calcula la iluminaci&oacute;n directa recibida de  todas las fuentes de luz, esto es si no existe un objeto que impida su  visibilidad. Para materiales perfectamente especulares se genera un rayo en la  direcci&oacute;n de reflexi&oacute;n w<sub>r</sub> .(2) </font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/fo0306316.jpg" alt="fo03" width="205" height="28"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para materiales transl&uacute;cidos se genera adem&aacute;s  un rayo en la direcci&oacute;n de refracci&oacute;n w<sub>r</sub>&nbsp;(3), y  se divide la potencia asignada a la iluminaci&oacute;n del rayo incidente, seg&uacute;n las  ecuaciones de <em>Fresnel</em> (Torrance &amp;  Sparrow, 1967).</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/fo0406316.jpg" alt="fo04" width="371" height="48"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">donde n<sub>1</sub>&nbsp;y n<sub>2</sub>&nbsp;son los &iacute;ndices de refracci&oacute;n de los medios  separados por una superficie en el punto x. La iluminaci&oacute;n de estos nuevos rayos en las direcciones w<sub>r</sub>&nbsp;y w<sub>t</sub>, si existen, se calculan an&aacute;logamente.</font> <a href="/img/revistas/rcci/v10n3/f0106316.jpg" target="_blank"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Figura 1 </font></strong></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Las ecuaciones de <em>Fresnel</em> permiten modelar de forma f&iacute;sicamente correcta la  interacci&oacute;n de la luz con los materiales transl&uacute;cidos. No obstante, su c&oacute;mputo  resulta costoso. En implementaciones concretas, se usa la aproximaci&oacute;n de <em>Schlick</em> (Schlick, 1994) que produce  resultados plausibles con un costo computacional mucho menor.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La definici&oacute;n cl&aacute;sica de <em>raytracing</em> solo calcula la iluminaci&oacute;n indirecta debido a rebotes  perfectamente especulares (reflexi&oacute;n y refracci&oacute;n de <em>Fresnel</em>), convirti&eacute;ndola as&iacute; en una aproximaci&oacute;n muy simple a la  ecuaci&oacute;n de iluminaci&oacute;n. No permite, por ejemplo, el c&aacute;lculo de iluminaci&oacute;n  indirecta en superficies difusas. Un m&eacute;todo m&aacute;s completo para aproximar la  ecuaci&oacute;n de iluminaci&oacute;n, conocido como <em>pathtracing</em> (Kajiya, 1984), fue presentado por <em>Kajiya</em> en el mismo art&iacute;culo en que propuso dicha ecuaci&oacute;n.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El elevado costo computacional del algoritmo <em>raytracing</em> representa un desaf&iacute;o para su aplicaci&oacute;n interactiva.  Para determinar la primera intersecci&oacute;n en el trayecto de un rayo con la  geometr&iacute;a de la escena, es necesario hacer una considerable cantidad de pruebas  de intersecci&oacute;n. Adem&aacute;s, cada intersecci&oacute;n real puede generar a su vez dos  rayos m&aacute;s, provocando un crecimiento exponencial de la complejidad del algoritmo,  en funci&oacute;n de la cantidad de rebotes que se desee simular. <em>Whitted</em> (Whitted, 1980) report&oacute; que aproximadamente el 95% del  tiempo de renderizado se concentra en el c&aacute;lculo de pruebas de  intersecci&oacute;n entre rayos y objetos de la escena. Muchos algoritmos de  iluminaci&oacute;n global organizan la geometr&iacute;a de la escena, generalmente definida  por tri&aacute;ngulos, de tal forma que puedan descartar una gran parte de ella en la  b&uacute;squeda de la primera intersecci&oacute;n en la trayectoria de un rayo. Al modelo que  representa este agrupamiento de los tri&aacute;ngulos se le nombra estructura de  aceleraci&oacute;n.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Las estructuras de aceleraci&oacute;n se utilizan para reducir el n&uacute;mero de  pruebas de intersecci&oacute;n, y por tanto acelerar el proceso de renderizado. Una estructura  de este tipo debe ofrecer un equilibrio entre su costo de construcci&oacute;n y  reducci&oacute;n de pruebas de intersecci&oacute;n, para que pueda ser considerada eficiente.  Al mismo tiempo, es deseable que sea simple de representar computacionalmente. Estas  se pueden clasificar en dos categor&iacute;as: esquemas de subdivisi&oacute;n espacial (<em>spatial subdivision schemes</em>) y jerarqu&iacute;a  de vol&uacute;menes delimitantes (<em>bounding  volume hierarchies</em>, BVH) (Rubin &amp; Whitted, 1980). La estructura de  aceleraci&oacute;n <em>kd-tree</em> se clasifica como  un esquema de subdivisi&oacute;n espacial. Esta ha sido utilizada eficientemente en  CPU para realizar consultas de intersecci&oacute;n y estimaciones de densidad (Jensen,  2001). La construcci&oacute;n en tiempo real del <em>kd-tree</em> en GPU (Zhou, Hou, Wang, &amp; Guo, 2008) puede ser empleada para acelerar una  implementaci&oacute;n de <em>raytracing</em> (Horn,  Sugerman, Houston, &amp; Hanrahan, 2007; Wald &amp; Havran, 2006; Shevtsov,  Soupikov, &amp; Kapustin, 2007). Las jerarqu&iacute;as de vol&uacute;menes delimitantes,  aunque no se ha descrito como una estructura r&aacute;pida en CPU, su simplicidad ha  permitido la obtenci&oacute;n de buenos resultados en la aceleraci&oacute;n de las consultas  de intersecci&oacute;n en GPU (Lauterbach, Garland, Sengupta, Luebke, &amp; Manocha, 2009;  Lauterbach, Yoon, Tuft, &amp; Manocha, 2006; Gunther, Popov, Seidel, &amp;  Slusallek, 2007). </font></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">A-Buffer y  Pseudo-Interval Tree</font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El <em>A-Buffer</em> es una estructura  de datos, propuesta por <em>Carpenter</em> (Carpenter,  1984), que asocia a cada p&iacute;xel de la pantalla una lista de los fragmentos de la  geometr&iacute;a de la escena que son visibles a trav&eacute;s de dicho p&iacute;xel. Es decir, cada  fragmento representa la intersecci&oacute;n de una superficie de la geometr&iacute;a de la  escena con un <em>frustum </em>infinito que parte de un p&iacute;xel del plano de imagen en direcci&oacute;n opuesta  al observador, como se muestra en la <a href="/img/revistas/rcci/v10n3/f0206316.jpg" target="_blank">Figura 2</a>. Estos fragmentos son ordenados  por su profundidad, y la longitud de la lista es llamada complejidad de  profundidad. Dicha estructura ha sido empleada satisfactoriamente para la  generaci&oacute;n de sombras y la correcta simulaci&oacute;n de      transparencia sin previa ordenaci&oacute;n (<em>Order-Independent  Alpha Blending</em>) (Bavoil, Callahan, Lefohn, Comba, &amp; Silva, 2007; Bavoil  &amp; Myers, 2008; Bavoil &amp; Enderton, 2011). Los dos enfoques, de su  implementaci&oacute;n en GPU, recogidos en la literatura consisten en una lista  enlazada (Garanzha &amp; Loop, 2010; Barta &amp; Kov&aacute;cs, 2011), y un arreglo de  tama&ntilde;o prefijado (Jang &amp; Han, 2008). </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La ventaja principal de la primera alternativa radica en que el espacio  ocupado por cada lista es proporcional a la complejidad de profundidad del  p&iacute;xel al que est&aacute; asociada. En cambio, representa una desventaja el hecho de  realizar una b&uacute;squeda lineal para determinar el fragmento m&aacute;s pr&oacute;ximo a un  punto del espacio. Por otra parte, el empleo de un arreglo de tama&ntilde;o fijo para  almacenar los fragmentos, permite ordenarlos en tiempo O(n log n), donde n &nbsp;es la cantidad de elementos a considerar. Esto  favorece la r&aacute;pida detecci&oacute;n del fragmento m&aacute;s cercano a un punto del espacio,  realizando una b&uacute;squeda binaria en la profundidad. A su vez, esta tiene la  desventaja de que todo p&iacute;xel que tenga m&aacute;s fragmentos asociados que la cantidad  m&aacute;xima permitida (preestablecida) en los arreglos perder&aacute; informaci&oacute;n, y se  desperdicia espacio en los p&iacute;xeles donde la cantidad de fragmentos no cubren  esta cantidad. Estas implementaciones carecen, fundamentalmente, de un adecuado  balance entre el espacio ocupado y su eficiente utilizaci&oacute;n en las consultas. <em>Vasilakis</em> (Vasilakis &amp; Fudos, 2012)  explota la naturaleza esparcida de los p&iacute;xeles vac&iacute;os en una imagen para  construir un <em>A-Buffer</em>, que evita las  limitaciones presentes en las propuestas basadas en listas enlazadas y arreglos  de tama&ntilde;o fijo. Esta extensi&oacute;n recibe el nombre de <em>S-Buffer</em>.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Si en cada una de las caras de un cubo centrado  en el observador se construye un <em>A-Buffer</em>,  se obtiene una subdivisi&oacute;n del espacio. Esta representaci&oacute;n de la escena, con  resoluci&oacute;n dependiente del observador, posibilita el dise&ntilde;o de una funci&oacute;n de  intersecci&oacute;n de rayos. Para determinar la primera intersecci&oacute;n con la geometr&iacute;a  de la escena en el trayecto de un rayo se pueden visitar, en orden ascendente  seg&uacute;n su distancia al origen del rayo, los <em>frustums</em> atravesados por dicho rayo. En cada uno de estos <em>frustums</em> se verifica si alguno de sus fragmentos es intersectado.  En caso de que la secci&oacute;n del <em>frustum</em> analizado se considere que est&aacute; suficientemente lejos del origen del rayo, como  para que la luz incidente desde este punto sea despreciable, se detiene el  proceso de b&uacute;squeda haciendo finita su ejecuci&oacute;n. De esta forma se reduce la  cantidad de pruebas de intersecci&oacute;n, considerando solamente los tri&aacute;ngulos que  yacen en los <em>frustums</em> de la  trayectoria del rayo. Sin embargo, si un <em>frustum</em> visitado contiene muchos fragmentos distantes del rayo, entonces se estar&aacute;  realizando un n&uacute;mero considerable de operaciones innecesarias. Para mejorar  esto se propone filtrar tales fragmentos mediante una condici&oacute;n necesaria, pero  simple, que cumplan los fragmentos intersectados por un rayo, y luego verificar  la intersecci&oacute;n real. Cada fragmento en un <em>frustum</em> est&aacute; delimitado por un intervalo de profundidad en espacio de vista, y de igual  forma sucede con la secci&oacute;n de un rayo que atraviesa dicho <em>frustum</em>. Si un rayo intersecta un fragmento en un <em>frustum</em>, entonces necesariamente se  deben solapar sus intervalos de profundidad en este.</font> <strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="#f03">Figura 3</a> </font></strong></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/f0306316.jpg" alt="f03" width="443" height="329"><a name="f03"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Esta observaci&oacute;n permite plantear como  condici&oacute;n de filtrado buscar en cada <em>frustum</em> los fragmentos en que su intervalo se solape con el intervalo asociado al rayo.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El <em>interval  tree</em> (McCreight, 1980; Edelsbrunner, 1980) es una estructura de datos  dise&ntilde;ada para reportar todos los intervalos que se solapan con un intervalo  dado, con complejidad temporal y espacial &oacute;ptima (Preparata &amp; Shamos, 1985).  Esta estructura genera una partici&oacute;n del conjunto de intervalos a consultar,  empleando un &aacute;rbol binario de b&uacute;squeda. Cada nodo almacena todos los intervalos  que contienen su discriminante y no contienen el discriminante de ning&uacute;n  ancestro a &eacute;l. Esto garantiza que los subconjuntos almacenados en los nodos son  disjuntos dos a dos. Por tanto, para que la uni&oacute;n de estos subconjuntos resulte  en el conjunto de intervalos a consultar, la elecci&oacute;n de los discriminantes  debe garantizar que todo intervalo contenga al menos un discriminante de este  &aacute;rbol. Estas invariantes son adoptadas por el <em>interval tree</em>. No obstante, su potencial radica en que los n&uacute;meros  asignados a los nodos del &aacute;rbol son seleccionados cuidadosamente para que su  altura sea logar&iacute;tmica respecto a la cantidad de intervalos guardados. Asimismo,  cada subconjunto se almacena adecuadamente, en dos listas ordenadas, para  agilizar las consultas. Aunque resulta id&oacute;nea la aplicaci&oacute;n de esta estructura de  datos al problema, su construcci&oacute;n inherentemente recursiva (Preparata &amp;  Shamos, 1985) dificulta su implementaci&oacute;n en GPU. No obstante, se propone una alternativa que  facilita dicha implementaci&oacute;n y mantiene las mismas invariantes estructurales,  a&uacute;n y cuando no garantiza que su altura sea logar&iacute;tmica respecto a la cantidad  de intervalos que almacena. Esta ser&aacute; denominada <em>pseudo-interval tree</em> (PIT). En cada nodo del <em>pseudo-interval tree</em> se almacena el discriminante y una sola lista  de intervalos, sin ning&uacute;n criterio de ordenaci&oacute;n. La gran diferencia respecto a  su original radica en que su algoritmo de construcci&oacute;n es online, es decir, un  proceso incremental. Este inicialmente parte de un &aacute;rbol nulo, y procesa  intervalo por intervalo insert&aacute;ndolos en la estructura construida hasta el paso  anterior. Para cada nodo analizado se determina si el intervalo se almacena en  &eacute;l o se le cede a alguno de sus hijos, seg&uacute;n su discriminante. Si en este  proceso se alcanza un nodo nulo, entonces se sustituye por uno nuevo, tomando  como discriminante el punto medio entre los extremos del intervalo a insertar,  y se agrega como &uacute;nico elemento a su lista.</font></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Construcci&oacute;n en  GPU</font></strong> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La estructura a construir en GPU es una  integraci&oacute;n entre el <em>A-Buffer</em> y <em>el pseudo-interval tree</em> (A-PIT). La  misma est&aacute; compuesta por 4 arreglos: una lista de tri&aacute;ngulos, una lista de  nodos, una lista de fragmentos y una matriz de entradas.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La lista de tri&aacute;ngulos almacena una descomposici&oacute;n en tri&aacute;ngulos de la  escena para permitir el c&aacute;lculo de las intersecciones de forma exacta. La lista  de nodos almacena los nodos del &aacute;rbol que particiona los fragmentos visibles a  partir del p&iacute;xel correspondiente. En cada nodo se almacena su discriminante,  las correspondientes referencias a sus nodos hijos y al padre, y el &iacute;ndice del  primer fragmento que almacena en la lista de fragmentos. El conjunto de  intervalos (fragmentos) que incluye un nodo est&aacute; representado por una lista  enlazada. La lista de fragmentos almacena </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">los elementos de estas listas enlazadas. Para  cada fragmento se almacena su profundidad m&iacute;nima y m&aacute;xima en espacio de vista,  el &iacute;ndice del tri&aacute;ngulo correspondiente en la lista de tri&aacute;ngulos, y el &iacute;ndice  de su sucesor en la lista enlazada a la cual corresponde. La matriz de entradas  es una textura bi-dimensional que permite obtener para un p&iacute;xel el &iacute;ndice del  nodo ra&iacute;z del &aacute;rbol, en la lista de nodos, que particiona el conjunto de  fragmentos contenidos en el <em>frustum</em> inducido por dicho p&iacute;xel.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la <a href="#f04">Figura 4</a> se muestra el <em>pseudo-interval  tree</em> construido para los fragmentos encontrados en el p&iacute;xel representados  en la <a href="/img/revistas/rcci/v10n3/f0206316.jpg" target="_blank">Figura 2</a>.</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/f0406316.jpg" alt="f04" width="487" height="324"><a name="f04"></a></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Consulta al A-PIT</font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Con la estructura de datos construida es  posible identificar r&aacute;pidamente los fragmentos que se encuentran en un <em>frustum</em> a cierta profundidad en espacio  de vista. Precisamente se construye un <em>pseudo-interval  tree</em> por cada p&iacute;xel para cumplir este objetivo. La b&uacute;squeda en el <em>pseudo-interval tree</em> es id&eacute;ntica a la  del <em>interval tree</em> (Preparata &amp; Shamos,  1985), solo que, al no incluir ning&uacute;n criterio de ordenaci&oacute;n en las listas  asociadas a los nodos, es necesario recorrerlas completamente. Este algoritmo  consiste esencialmente, en determinar qu&eacute; subconjuntos (nodos) de fragmentos  (intervalos) deben ser examinados en busca de potenciales intersecciones con el  intervalo de entrada.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Aunque la formulaci&oacute;n de la b&uacute;squeda es de naturaleza recursiva, se  puede implementar f&aacute;cilmente en GPU realizando un recorrido en preorden por los  nodos a visitar, de forma iterativa haciendo uso de las referencias al padre en  cada nodo. Dado que la cantidad de instrucciones a ejecutar en un <em>shader</em> solo puede depender de datos  inmutables durante su ejecuci&oacute;n, el n&uacute;mero de nodos en el &aacute;rbol resulta una cota  bien ajustada como n&uacute;mero m&aacute;ximo de iteraciones para este recorrido. </font></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Formulaci&oacute;n Acumulativa de  Raytracing</font></strong> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El algoritmo <em>raytracing</em> se define en t&eacute;rminos de una funci&oacute;n de intersecci&oacute;n de  rayos y las ecuaciones de <em>Fresnel</em>. La  formulaci&oacute;n original produce una explosi&oacute;n recursiva para representar todas las  posibles combinaciones de reflexiones y refracciones a trav&eacute;s de m&uacute;ltiples  rebotes con superficies especulares. Esto no puede ser representado  directamente en un <em>shader</em> por las  inherentes limitantes que poseen los procesadores gr&aacute;ficos.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para hallar una formulaci&oacute;n no recursiva, es necesario realizar algunas  simplificaciones. Una posible soluci&oacute;n es procesar todas las combinaciones de  rayos en los primeros rebotes, y en los restantes determinar si el rayo se  refleja o refracta de acuerdo al factor de reflexi&oacute;n. De esta forma se puede  computar la iluminaci&oacute;n obtenida en un punto, evaluando el camino de cada rayo  por independiente, con recursi&oacute;n de cola, y combinando sus contribuciones. Una  vez conocido que en cada rebote se va a seguir un solo camino, se puede  expresar la iluminaci&oacute;n obtenida en el punto x &nbsp;despu&eacute;s de k &nbsp;rebotes mediante la siguiente recurrencia: </font></p>     ]]></body>
<body><![CDATA[<p align="center"><img src="/img/revistas/rcci/v10n3/fo0506316.jpg" alt="fo05" width="312" height="30"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">donde L<sub>k</sub> es la iluminaci&oacute;n calculada para <strong>k</strong> &nbsp;rebotes, R(x) &nbsp;es el factor de reflexi&oacute;n (refracci&oacute;n) en el punto x, I(x) es la  iluminaci&oacute;n que incide directamente de las fuentes de luz (iluminaci&oacute;n local) y x<sub>r</sub>&nbsp;es el  punto obtenido de la intersecci&oacute;n del rayo reflejado (refractado) con la  escena. Desarrollando la ecuaci&oacute;n (4) se obtiene:</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/fo0606316.jpg" alt="fo06" width="396" height="40"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">donde x<sub>k</sub>&nbsp;es el  punto obtenido tras la intersecci&oacute;n de k &nbsp;rebotes,  seg&uacute;n el camino tomado. La ecuaci&oacute;n (5) puede evaluarse mediante la acumulaci&oacute;n  de dos funciones: el producto de los valores R(x<sub>j</sub>)&nbsp;y la  suma de los valores de iluminaci&oacute;n en cada paso. Las ecuaciones para el k-&eacute;simo paso son:</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/fo0706316.jpg" alt="fo07" width="312" height="58"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El algoritmo obtenido se auxilia de texturas para acumular los  resultados parciales a medida que los rayos se distribuyen por la escena.  Tambi&eacute;n se debe tener en cuenta que en cada iteraci&oacute;n se deben calcular los  par&aacute;metros necesarios para el siguiente rebote (origen y direcci&oacute;n del rayo,  etc.). N&oacute;tese que estas recurrencias definen un &uacute;nico camino del rayo, por lo  que ser&aacute; necesario aplicar esta f&oacute;rmula (con otra combinaci&oacute;n de rebotes)  tantas veces como muestras se quiera tomar.</font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">RESULTADOS    <br> </font></strong></font>    <br>   <font size="2" face="Verdana, Arial, Helvetica, sans-serif">A continuaci&oacute;n, se muestran los resultados obtenidos con la t&eacute;cnica  propuesta en este art&iacute;culo.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Todos los algoritmos fueron implementados  &iacute;ntegramente en el lenguaje de <em>shader</em> HLSL (Feinstein, 2013) de DirectX 11. Asimismo, se utiliz&oacute; la biblioteca SlimDX  (Ardito, Buono, Costabile, Lanzilotti, &amp; Simeone, 2009) en conjunto con el  lenguaje C#, para manejar las escenas y el acoplamiento de los <em>shader</em> implementados. La configuraci&oacute;n  de hardware empleada en los experimentos consiste en un procesador Intel Core  i7-2600 a 3.4GHz con 4GB de memoria y un procesador de video NVidia GeForce GTX  690.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para validar la efectividad del uso de la estructura de datos presentada  se implement&oacute; una variante del algoritmo <em>raytracing</em> acumulativo auxili&aacute;ndose del <em>A-PIT</em> como estructura de aceleraci&oacute;n y otra sin emplearlo, o sea, utilizando  solamente el <em>A-Buffer</em>.</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/f0506316.jpg" alt="f05" width="483" height="187"><a name="f05"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La <a href="#f05">Figura 5</a> muestra una visualizaci&oacute;n del conjunto de escenas  seleccionadas para las pruebas realizadas. Todas son representadas con una  resoluci&oacute;n de 512 x 512 y su complejidad var&iacute;a en cuanto a su geometr&iacute;a  (cantidad de tri&aacute;ngulos), cantidad de objetos y si est&aacute;n delimitadas o no. La  primera escena (<em>Stanford Bunny</em>)  muestra una malla de 4968 tri&aacute;ngulos con reflexi&oacute;n y refracci&oacute;n de <em>Fresnel</em>, delimitada por dos planos con  reflexi&oacute;n especular perfecta a los lados y tres planos opacos con texturas en  las posiciones restantes. La segunda escena (<em>Armadillo</em>) muestra una malla de 69188 tri&aacute;ngulos opaca con un plano  a su derecha con reflexi&oacute;n especular perfecta y otro debajo opaco con una  textura; esta no se encuentra delimitada. La tercera escena (<em>Happy Buddha</em>) muestra una malla de 105  tri&aacute;ngulos con reflexi&oacute;n y refracci&oacute;n de <em>Fresnel</em>,  delimitada por un plano con reflexi&oacute;n especular perfecta a su derecha y 4  planos opacos de diferentes colores en las posiciones restantes. Todas poseen  una &uacute;nica fuente de luz puntual.</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/t0106316.jpg" alt="t01" width="533" height="243"><a name="t01"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La<a href="#t01"> Tabla 1</a> expone la ganancia promedio de  velocidad en cada una de las escenas de pruebas. En esta se puede observar que  aumentar la resoluci&oacute;n del <em>A-Buffer</em> subyacente, no necesariamente implica un incremento en la velocidad de las  consultas de intersecci&oacute;n. No obstante, es favorable hacerlo cuando la  concentraci&oacute;n de tri&aacute;ngulos en el <em>frustum</em> asociado a un p&iacute;xel es demasiado alta. Asimismo, revela el buen comportamiento  del <em>A-PIT</em> en escenas donde se procesa  un gran n&uacute;mero de rayos no coherentes con el observador.</font> </p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La <a href="/img/revistas/rcci/v10n3/f0606316.jpg" target="_blank">Figura 6</a> expone una escala de colores, donde  azul es menor y rojo es mayor, la complejidad por p&iacute;xel. Aqu&iacute; la complejidad de  un p&iacute;xel expresa la cantidad de <em>frustums</em> visitados sumado a la cantidad de fragmentos analizados para realizar las  consultas de intersecci&oacute;n en dicho p&iacute;xel, es decir, una medida proporcional a  la cantidad de operaciones realizadas para calcular el color de un p&iacute;xel.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Intuitivamente en escenas delimitadas por varias superficies especulares  se procesan una cantidad considerable de rayos no coherentes con el observador  que colisionan con alguna superficie. Es decir, en escenas como la primera, no  es muy grande el volumen de espacio vac&iacute;o que necesita atravesar un rayo para  encontrar una intersecci&oacute;n. Esto significa que en estos casos lo m&aacute;s importante  es optimizar la forma de encontrar la primera intersecci&oacute;n en aquel <em>frustum</em> que la contenga, lo cual  evidencia el buen rendimiento del <em>A-PIT</em> en esta escena. Por la propiedad de no ser delimitada, la segunda escena  enfatiza las caracter&iacute;sticas del <em>A-PIT</em>.  Dicha estructura es incapaz de reconocer r&aacute;pidamente cuando un rayo se pierde  en el infinito, teniendo que recorrer todos los p&iacute;xeles hasta encontrarse  suficientemente lejos de su origen para descartar el rayo. A su vez cuando un  rayo no coherente con el observador est&aacute; pr&oacute;ximo a una superficie, reconoce  r&aacute;pidamente si hay o no posibles intersecciones. Esto se muestra por la alta  complejidad que tienen los p&iacute;xeles que generan rayos que no encuentran  intersecciones, despu&eacute;s de algunos rebotes, en contraste con los que todos los  rebotes simulados intersectan a alguna superficie. En la tercera escena se  refleja la importancia de particionar los fragmentos por cada <em>frustum</em>. Aqu&iacute; se puede observar  claramente la eficiencia de esta estructura de datos al disminuir considerablemente  la cantidad de operaciones realizadas en cada p&iacute;xel. Esto es una consecuencia  del enfoque te&oacute;rico adoptado para concebir dicha estructura. </font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>CONCLUSIONES</B></font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En este art&iacute;culo se presenta una  nueva estructura de datos denominada <em>A-PIT</em>,  capaz de acelerar las consultas de intersecci&oacute;n de rayos para algoritmos de  iluminaci&oacute;n global y que puede ser implementada completamente en los  dispositivos de aceleraci&oacute;n gr&aacute;fica actuales.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Esta estructura surge como una  combinaci&oacute;n de las ideas del esquema de subdivisi&oacute;n espacial de la geometr&iacute;a de  la escena, en listas de fragmentos, realizado por el <em>A-Buffer</em> y el m&eacute;todo de partici&oacute;n de un conjunto de intervalos del <em>interval tree</em>. La misma se concibi&oacute; con  el objetivo de minimizar la cantidad de pruebas de intersecci&oacute;n para rayos no  coherentes con el observador, especialmente para aquellos rayos que  colisionar&aacute;n con la geometr&iacute;a de la escena. Adem&aacute;s, se esboz&oacute; c&oacute;mo utilizarla  en una implementaci&oacute;n concreta de la variante acumulativa de <em>raytracing</em> presentada.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El conjunto de experimentos  realizados mostr&oacute; tanto las ventajas como deficiencias del <em>A-PIT</em>, mostrando que puede ser utilizada para visualizar  interactivamente escenas de complejidad media con una calidad visual aceptable.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En cada una de las escenas se  reflej&oacute; como el n&uacute;mero de operaciones en los <em>frustums</em> con alta densidad de fragmentos se reduce considerablemente.  Las escenas no delimitadas representan las de mayor dificultad para esta  estructura. Cuando la geometr&iacute;a de la escena se encuentra bien distante del camino  de un rayo, no puede evitar procesar todos los <em>frustums</em> en su trayecto, aunque no haya intersecciones en ellos.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la literatura cient&iacute;fica se han propuesto estructuras de datos que se  basan en el mismo principio de subdivisi&oacute;n del <em>A-Buffer</em> y abordan el problema de atravesar r&aacute;pidamente grandes  vol&uacute;menes de espacios vac&iacute;os sin optimizar la b&uacute;squeda en las zonas donde hay  muchos fragmentos cercanos a la trayectoria del rayo. Es decir, enfrentan el  problema de la aceleraci&oacute;n de las consultas de intersecci&oacute;n con un enfoque  totalmente ortogonal al del <em>A-PIT</em>. Se  propone como trabajo futuro estudiar la factibilidad de la integraci&oacute;n del <em>A-PIT</em> con estas estructuras. </font></p>     <p>&nbsp;</p>     <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>REFERENCIAS  BIBLIOGR&Aacute;FICAS</B></font>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Aalund, F. P.; Frisvad J. R.; B&aelig;rentzen  J. A. Interactive Global Illumination  Effects Using Deterministically Directed Layered Depth Maps. En: Proceedings of the 26th Eurographics  Symposium on Rendering-Experimental Ideas and Implementations.  Eurographics Association, 2015.     </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Ardito, C.; Buono P.; Costabile M. F.; Lanzilotti R.; Simeone A. L. Comparing low cost input devices for interacting with 3D Virtual  Environments, En: 2nd Conference on Human System Interactions 2009. HSI'09,  2009, p. 292-297.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Barta, P.; Kov&aacute;cs B. Order Independent Transparency with PerPixel Linked Lists.  Budapest University of Technology and Economics, 2011.     </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Bavoil, L.; Callahan S. P.; Lefohn A.; Comba J.; Silva C. T. Multi-fragment effects on the GPU using the k-buffer, En:  Proceedings of the 2007 symposium on Interactive 3D graphics and games, 2007,  p. 97-104.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Bavoil, L.; Enderton E. Constant-memory order-independent transparency techniques.  NVIDIA Corp, 2011.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Bavoil, L.; Myers K. Order independent  transparency with dual depth peeling, NVIDIA OpenGL SDK, 2008.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Carpenter, L. The A-buffer, an antialiased  hidden surface method, ACM Siggraph Computer Graphics, 1984, 18 (3): p. 103-108.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Edelsbrunner, H. Dynamic data structures for  orthogonal intersection queries, 1980.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Feinstein, D. HLSL Development Cookbook, Birmingham,  Packt Publishing, 2013.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Garanzha, K.; Loop C. Fast Ray Sorting and  Breadth-First Packet Traversal for GPU Ray Tracing, Computer Graphics Forum, 2010,  29 (2): p. 289-298.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Gunther, J.; Popov S.; Seidel H-P.; Slusallek P. Realtime ray tracing on GPU with BVH-based packet traversal. En:  IEEE Symposium on Interactive Ray Tracing 2007 RT'07, 2007, p. 113-118.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Horn, D. R.; J. Sugerman; M. Houston; Hanrahan P. Interactive k-d tree GPU raytracing, Symposium on Interactive 3D  Graphics: Proceedings of the 2007 symposium on Interactive 3D graphics and  games, 2007, 30: p. 167-174.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Jang, H.; Han J. Fast collision detection  using the A-Buffer, The Visual Computer, 2008, 24 (7): p. 659-667.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Jensen, H. W. Realistic image synthesis  using photon mapping. Massachusets, AK Peters, 2001. 195 p.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">KAJIYA, J. T. The  Rendering Equation, ACM Siggraph Computer Graphics, 1986, 20: p. 143-150.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Knowles, P.; Leach G.; Zambetta F. Fast  sorting for exact OIT of  complex scenes. The Visual Computer, 2014, 30(6-8): p. 603-613.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Lauterbach, C.; Garland M.; Sengupta S.; Luebke D.; Manocha D. Fast BVH construction on GPUs, Computer Graphics Forum, 2009, 28  (2): p. 375-384.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Lauterbach, C.; Yoon S-E.; Tuft D.; Manocha D. RT-DEFORM: Interactive ray tracing of dynamic scenes using BVHs.  En: IEEE Symposium on Interactive Ray Tracing 2006, 2006, p. 39-46.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Lefebvre, S.; Hornus S.; Lasram A. Per-pixel  lists for single pass a-buffer.  CRC Press, 2014.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Lipowski, J. D-buffer: irregular image data storage made  practical. OptoElectronics Review, 2013, 21(1): p. 103-125.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">McCreight, E. M. Efficient algorithms for  enumerating intersecting intervals and rectangles, 1980.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Preparata, F. P.; Shamos M. I. Computational  geometry: an introduction, New York, Springer-Verlag, 1985, 411 p.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Rubin, S. M.; Whitted, T. A 3-dimensional  representation for fast rendering of complex scenes, ACM SIGGRAPH Computer  Graphics, 1980, 14 (3), p. 110-116.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Schlick, C. An Inexpensive BRDF Model for  Physically-based Rendering, Computer Graphics Forum, 1994, 13 (3): p. 233-246.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Shevtsov, M.; Soupikov A.; Kapustin A. Highly  Parallel Fast KD-tree Construction for Interactive Ray Tracing of Dynamic  Scenes, Computer Graphics Forum, 2007, 26 (3): p. 305-404.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Torrance, K. E.; Sparrow, E. M. Theory for  off-specular reflection from roughened surfaces, JOSA, 1967, 57 (9): p.  1105-1112.    </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Vasilakis, A.; Fudos I. k+-buffer:  Fragment Synchronized k-buffer.  En: Proceedings of the 18th Meeting of  the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games, 2014,  p. 143&ndash;150.</font></p>     ]]></body>
<body><![CDATA[<!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Vasilakis, A.; Fudos I. S-buffer:  Sparsity-aware Multi-fragment Rendering, En: Eurographics (short papers).  Citeseer, 2012, p. 101-104.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Wald, I.; Havran V. On building fast  kd-trees for ray tracing, and on doing that in O(N log N). En: IEEE Symposium  on Interactive Ray Tracing 2006, 2006, p. 61-69.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Whitted, T. An improved illumination model  for shaded display, Communications of the ACM, 1980, 23 (6): p. 343-349.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Zhou, K.; Hou Q.; Wang R.; Guo B. Real-time KD-tree construction  on graphics hardware, ACM Trans. Graph. SIGGRAPH Asia, 2008, 27  (5): p. 121-126.    </font></p>     <p name="_ENREF_1">&nbsp;</p>     <p name="_ENREF_1">&nbsp;</p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Recibido: 10/04/2016    <br> Aceptado: 15/05/2016</font></p>      ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Aalund]]></surname>
<given-names><![CDATA[F. P]]></given-names>
</name>
<name>
<surname><![CDATA[Frisvad]]></surname>
<given-names><![CDATA[J. R]]></given-names>
</name>
<name>
<surname><![CDATA[Bærentzen]]></surname>
<given-names><![CDATA[J. A]]></given-names>
</name>
</person-group>
<source><![CDATA[Interactive Global Illumination Effects Using Deterministically Directed Layered Depth Maps]]></source>
<year>2015</year>
<publisher-name><![CDATA[Eurographics Association]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ardito]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Buono]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Costabile]]></surname>
<given-names><![CDATA[M. F]]></given-names>
</name>
<name>
<surname><![CDATA[Lanzilotti]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Simeone]]></surname>
<given-names><![CDATA[A. L]]></given-names>
</name>
</person-group>
<source><![CDATA[Comparing low cost input devices for interacting with 3D Virtual Environments]]></source>
<year>2009</year>
<page-range>292-297</page-range></nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Barta]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Kovács]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
</person-group>
<source><![CDATA[Order Independent Transparency with PerPixel Linked Lists]]></source>
<year>2011</year>
<publisher-name><![CDATA[Budapest University of Technology and Economics]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bavoil]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Callahan]]></surname>
<given-names><![CDATA[S. P]]></given-names>
</name>
<name>
<surname><![CDATA[Lefohn]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Comba]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Silva]]></surname>
<given-names><![CDATA[C. T]]></given-names>
</name>
</person-group>
<source><![CDATA[Multi-fragment effects on the GPU using the k-buffer]]></source>
<year>2007</year>
<page-range>97-104</page-range></nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bavoil]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Enderton]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
</person-group>
<source><![CDATA[Constant-memory order-independent transparency techniques.]]></source>
<year>2011</year>
<publisher-name><![CDATA[NVIDIA Corp]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bavoil]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Myers]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
</person-group>
<source><![CDATA[Order independent transparency with dual depth peeling]]></source>
<year>2008</year>
<publisher-name><![CDATA[NVIDIA OpenGL SDK]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Carpenter]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[The A-buffer, an antialiased hidden surface method]]></article-title>
<source><![CDATA[]]></source>
<year>1984</year>
<volume>18</volume>
<numero>3</numero>
<issue>3</issue>
<page-range>103-108</page-range></nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Edelsbrunner]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
</person-group>
<source><![CDATA[Dynamic data structures for orthogonal intersection queries]]></source>
<year>1980</year>
</nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Feinstein]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<source><![CDATA[HLSL Development Cookbook]]></source>
<year>2013</year>
<publisher-name><![CDATA[Packt Publishing]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Garanzha]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[Loop]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Fast Ray Sorting and Breadth-First Packet Traversal for GPU Ray Tracing]]></article-title>
<source><![CDATA[]]></source>
<year>2010</year>
<volume>29</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>289-298</page-range></nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Gunther]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Popov]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Seidel]]></surname>
<given-names><![CDATA[H-P]]></given-names>
</name>
<name>
<surname><![CDATA[Slusallek]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
</person-group>
<source><![CDATA[Realtime ray tracing on GPU with BVH-based packet traversal]]></source>
<year>2007</year>
<page-range>113-118</page-range></nlm-citation>
</ref>
<ref id="B12">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Horn]]></surname>
<given-names><![CDATA[D. R]]></given-names>
</name>
<name>
<surname><![CDATA[Sugerman]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Houston]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Hanrahan]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
</person-group>
<source><![CDATA[Interactive k-d tree GPU raytracing]]></source>
<year>2007</year>
<volume>30</volume>
<page-range>167-174</page-range></nlm-citation>
</ref>
<ref id="B13">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jang]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
<name>
<surname><![CDATA[Han]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Fast collision detection using the A-Buffer]]></article-title>
<source><![CDATA[]]></source>
<year>2008</year>
<volume>24</volume>
<numero>7</numero>
<issue>7</issue>
<page-range>659-667</page-range></nlm-citation>
</ref>
<ref id="B14">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jensen]]></surname>
<given-names><![CDATA[H. W]]></given-names>
</name>
</person-group>
<source><![CDATA[Realistic image synthesis using photon mapping]]></source>
<year>2001</year>
<page-range>195</page-range><publisher-loc><![CDATA[Massachusets ]]></publisher-loc>
<publisher-name><![CDATA[AK Peters]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B15">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[KAJIYA]]></surname>
<given-names><![CDATA[J. T]]></given-names>
</name>
</person-group>
<source><![CDATA[The Rendering Equation]]></source>
<year>1986</year>
<volume>20</volume>
<page-range>143-150</page-range><publisher-name><![CDATA[ACM Siggraph Computer Graphics]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B16">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Knowles]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Leach]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Zambetta]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Fast sorting for exact OIT of complex scenes]]></article-title>
<source><![CDATA[]]></source>
<year>2014</year>
<volume>30</volume>
<numero>6-8</numero>
<issue>6-8</issue>
<page-range>603-613</page-range></nlm-citation>
</ref>
<ref id="B17">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lauterbach]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Garland]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Sengupta]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Luebke]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Manocha]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Fast BVH construction on GPUs]]></article-title>
<source><![CDATA[]]></source>
<year>2009</year>
<volume>28</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>375-384</page-range></nlm-citation>
</ref>
<ref id="B18">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lauterbach]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Yoon]]></surname>
<given-names><![CDATA[S-E]]></given-names>
</name>
<name>
<surname><![CDATA[Tuft]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Manocha]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<source><![CDATA[RT-DEFORM: Interactive ray tracing of dynamic scenes using BVHs.]]></source>
<year>2006</year>
<page-range>39-46</page-range></nlm-citation>
</ref>
<ref id="B19">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lefebvre]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Hornus]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Lasram]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Per-pixel lists for single pass a-buffer]]></source>
<year>2014</year>
<publisher-name><![CDATA[CRC Press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B20">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lipowski]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[D-buffer: irregular image data storage made practical]]></article-title>
<source><![CDATA[]]></source>
<year>2013</year>
<volume>21</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>103-125</page-range></nlm-citation>
</ref>
<ref id="B21">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[McCreight]]></surname>
<given-names><![CDATA[E. M]]></given-names>
</name>
</person-group>
<source><![CDATA[Efficient algorithms for enumerating intersecting intervals and rectangles]]></source>
<year>1980</year>
</nlm-citation>
</ref>
<ref id="B22">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Preparata]]></surname>
<given-names><![CDATA[F. P]]></given-names>
</name>
<name>
<surname><![CDATA[Shamos]]></surname>
<given-names><![CDATA[M. I]]></given-names>
</name>
</person-group>
<source><![CDATA[Computational geometry: an introduction]]></source>
<year>1985</year>
<page-range>411</page-range><publisher-loc><![CDATA[^eNew York New York]]></publisher-loc>
<publisher-name><![CDATA[Springer-Verlag]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B23">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Rubin]]></surname>
<given-names><![CDATA[S. M]]></given-names>
</name>
<name>
<surname><![CDATA[Whitted]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A 3-dimensional representation for fast rendering of complex scenes]]></article-title>
<source><![CDATA[]]></source>
<year>1980</year>
<volume>14</volume>
<numero>3</numero>
<issue>3</issue>
<page-range>110-116</page-range></nlm-citation>
</ref>
<ref id="B24">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Schlick]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[An Inexpensive BRDF Model for Physically-based Rendering]]></article-title>
<source><![CDATA[]]></source>
<year>1994</year>
<volume>13</volume>
<numero>3</numero>
<issue>3</issue>
<page-range>233-246</page-range></nlm-citation>
</ref>
<ref id="B25">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Shevtsov]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Soupikov]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Kapustin]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Highly Parallel Fast KD-tree Construction for Interactive Ray Tracing of Dynamic Scenes]]></article-title>
<source><![CDATA[]]></source>
<year>2007</year>
<volume>26</volume>
<numero>3</numero>
<issue>3</issue>
<page-range>305-404</page-range></nlm-citation>
</ref>
<ref id="B26">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Torrance]]></surname>
<given-names><![CDATA[K. E]]></given-names>
</name>
<name>
<surname><![CDATA[Sparrow]]></surname>
<given-names><![CDATA[E. M]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Theory for off-specular reflection from roughened surfaces]]></article-title>
<source><![CDATA[]]></source>
<year>1967</year>
<volume>57</volume>
<numero>9</numero>
<issue>9</issue>
<page-range>1105-1112</page-range></nlm-citation>
</ref>
<ref id="B27">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Vasilakis]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Fudos]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
</person-group>
<source><![CDATA[k+-buffer: Fragment Synchronized k-buffer]]></source>
<year>2014</year>
<page-range>143-150</page-range></nlm-citation>
</ref>
<ref id="B28">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Vasilakis]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Fudos]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
</person-group>
<source><![CDATA[S-buffer: Sparsity-aware Multi-fragment Rendering]]></source>
<year>2012</year>
<page-range>101-104</page-range></nlm-citation>
</ref>
<ref id="B29">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Wald]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
<name>
<surname><![CDATA[Havran]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
</person-group>
<source><![CDATA[On building fast kd-trees for ray tracing, and on doing that in O(N log N).]]></source>
<year>2006</year>
<page-range>61-69</page-range><publisher-name><![CDATA[IEEE Symposium on Interactive Ray Tracing]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B30">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Whitted]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[An improved illumination model for shaded display]]></article-title>
<source><![CDATA[]]></source>
<year>1980</year>
<volume>23</volume>
<numero>6</numero>
<issue>6</issue>
<page-range>343-349</page-range></nlm-citation>
</ref>
<ref id="B31">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zhou]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[Hou]]></surname>
<given-names><![CDATA[Q]]></given-names>
</name>
<name>
<surname><![CDATA[Wang]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Guo]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Real-time KD-tree construction on graphics hardware,]]></article-title>
<source><![CDATA[]]></source>
<year>2008</year>
<volume>27</volume>
<numero>5</numero>
<issue>5</issue>
<page-range>121-126</page-range><publisher-name><![CDATA[SIGGRAPH]]></publisher-name>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
