Code Monkey home page Code Monkey logo

ig-mini-pm's Introduction

Photon Mapper

  • Autor: Fernando Peña Bes
  • Autor: José Daniel Subías Sarrato

Informática Gráfica - Universidad de Zaragoza, curso 2020-21

Descripción

Este repositorio contiene un Photon Mapper que permite realizar el renderizado de escenas captando mediante la emisión de una determinada cantidad de fotones desde las fuentes de lus. Acto seguido un ray tracer genera rayos desde la cámara para poder realizar la estimación de la radiancia de cada pixel. Como punto de partida se toma el código proporcionado por los profesores de la asignatura de Informática Gráfica.

En el informe se explica en detalle la implementación del programa.

En las siguientes imágenes pueden verse ejemplos de escenas renderizadas con nuestro algoritmo.

question 2.1 question 2.3

Adicionalmente se implementó la posibilidad de añadir medios participativos(niebla) a las escenas.vNo obstante esta funcionalidad no se logró programar a tiempo, por lo que esta imcompleta. En las siguientes imágenes pueden verse ejemplos de escenas con presencia de niebla.

foggy diffuse foggy dielectric

Cómo compilar

En un entorno Linux deben ejecutarse la siguientes instrucciones para compilar el proyecto:

cd Ux
./buildpm.sh

Ejecutar el programa

./smallpm [opciones ...]

El resultado es una imagen en formato .hdr (Radiance HDR).

Lista de opciones

El Photon Mapper admite varios argumentos para realizar el renderizado de las escenas. La goemetría de las mismas ha de ser hardcodeada en el fichero principal del programa. Los valores por defecto se muestran entre paréntesis.

-film-name FILE            Nombre del fichero de salida (name_file).

-film-size-x WIDTH         Anchura de la imagen a renderizar (512).

-film-size-y HEIGHT        Altura de la iamgen a renderizar (512).

-scene N                   Especificación de la escena a renderizar debe ser
                           un número entre 1 y 6 (1).

-pm-total-photons N        Número máximo de fotones a almacenar en cada mapa
                           de fotones: global, cáustico y volumétrico (10000).

-pm-photons-global N       Número máximo de fotones a almacenar en el mapa
                           de fotones global (10000).

-pm-photons-caustic N      Número máximo de fotones a almacenar en el mapa 
                           de fotones de cáusticas (10000).

-pm-photons-volume N       Número máximo de fotones a almacenar en el mapa 
                           de fotones volumétrico (10000).

-pm-max-photons-shot N     Máximo número de fotones a emitir desde todas 
                           las fuentes de luz en total (100000).

-pm-nb-nearest-neighbor N  Número de fotones a tener en cuenta para realizar
                           la estimación de la radiancia (10).

-pm-raytraced-direct       Indica que el cálculo de la luz directa debe ser 
                           realizado mediante trazado de rayos (desactivado).

-volumetric                Añade un medio participativo al entorno con los valores
                           para los coeficientes de absorción y scattering especificados
                           en el fichero SmallPM/include/ParticipatingMedia.h (desactivado).

ig-mini-pm's People

Contributors

ferpb avatar dsubias avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.