Conceito

Programação em renderização é o processo de geração de uma imagem a partir de um modelo por meio de um software. No contexto da renderização gráfica, a programação em renderização refere-se a um processo de renderização que não depende dos ASICs de hardware gráfico, como uma placa gráfica. A renderização ocorre inteiramente na CPU. Renderizar tudo com a CPU tem a principal vantagem de não se restringir às capacidades do hardware gráfico.

A renderização é usada na arquitetura, jogos e filmes. Renderizar é o último passo em um processo de animação, e dá a aparência final aos modelos e animação com efeitos visuais como sombreamento, mapeamento de texturas, sombras, reflexos e borrões de movimento.

Softwares

Alguns softwares que são usados para esta finalidade são: OpenGL e DirectX. Alguns dos softwares que usam a programação em renderização são: 3ds Max, Maya, CINEMA 4D, Blender, Adobe Photoshop, Gimp, Corel, entre outros. E algumas das linguagens de programação mais usadas para tal processo são: C, C++, C#, Haskell, JavaScript. Descrever os softwares usados para esta finalidade. Detalhar, se existir, linguagens, banco de dados e frameworks.

Código

void

RenderFrame (int n, const struct mdl_model_t *mdl) {

int i, j;

GLfloat s, t;

vec3_t v;

struct mdl_vertex_t *pvert;

/* Verifica se n está em um alcance válido */

if ((n < 0) || (n > mdl->header.num_frames - 1))

return;

/* Ativa as texturas dos modelos */

glBindTexture (GL_TEXTURE_2D, mdl->tex_id[mdl->iskin]);

/* Desenha o Modelo */

glBegin (GL_TRIANGLES);

/* Desenha cada Triângulo */

for (i = 0; i < mdl->header.num_tris; ++i) {

/* Desenha cada vértice */

for (j = 0; j < 3; ++j) {

pvert = &mdl->frames[n].frame.verts[mdl->triangles[i].vertex[j]];

/* Calcula as coordenadas da textura */

s = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].s;

t = (GLfloat)mdl->texcoords[mdl->triangles[i].vertex[j]].t;

if (!mdl->triangles[i].facesfront && mdl->texcoords[mdl->triangles[i].vertex[j]].onseam) {

s += mdl->header.skinwidth * 0.5f; /* Face Traseira */

}

/* Escalas S e T variam de 0.0 a 1.0 */

s = (s + 0.5) / mdl->header.skinwidth;

t = (t + 0.5) / mdl->header.skinheight;

/* Passa as coordenadas de textura para OpenGL */

glTexCoord2f (s, t);

/* Vetor Normal */

glNormal3fv (anorms_table[pvert->normalIndex]);

/* Calcula a posição do vértice real */

v[0] = (mdl->header.scale[0] * pvert->v[0]) + mdl->header.translate[0];

v[1] = (mdl->header.scale[1] * pvert->v[1]) + mdl->header.translate[1];

v[2] = (mdl->header.scale[2] * pvert->v[2]) + mdl->header.translate[2];

glVertex3fv (v);

}

}

glEnd ();

}


Diagrama de Casos de Uso


Interações com as tecnologias

Conceito de Realidade Aumentada e Programação de Games, ambos utilizam a programação em renderização para realizar a renderização em tempo real ou renderização offline.

Informações adicionais

A renderização pode ser dividia em duas categorias principais: renderização em tempo real (conhecido como renderização online) e pré-renderização (conhecido como renderização offline). A renderização em tempo real é usada para renderizar de forma interativa com uma cena, como em jogos 3D, e geralmente cada quadro deve ser renderizado em poucos milissegundos. A renderização offline é usada para criar imagens e filmes realistas, onde cada quadro pode levar horas ou dias para serem finalizados.

Referências bibliográficas

RENDERIZAÇÃO. In: WIKIPÉDIA, a enciclopédia livre. Disponível em: <https://pt.wikipedia.org/w/index.php?title=Renderiza%C3%A7%C3%A3o&oldid=48488985>. Acesso em: 26 set. 2017.

Software Rendering. In: WIKIPEDIA, the free encyclopedia. Disponível em: <https://en.wikipedia.org/w/index.php?title=Software_rendering&oldid=786187051>. Acesso em 26 set. 2017.

Rendering (computer graphics). In: WIKIPEDIA, the free encyclopedia. Disponível em: <https://en.wikipedia.org/w/index.php?title=Rendering_(computer_graphics)&oldid=799916779>. Acesso em 26 set. 2017.

HENRY, David. MDL file format (Quake's models). Disponível em: <http://tfc.duke.free.fr/coding/mdl-specs-en.html>. Acesso em 26 set. 2017.