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

Incluir links (internos ou externos) temas que tem relação com este, explicando detalhes sobre. Limite de 3 internos e 2 externos.


Informações adicionais

Descrever detalhes a mais sobre esse tema.


Referências bibliográficas

Relacionar aqui as referências bibliográficas no padrão ABNT. 
Bases de procura: Artigos, publicações acadêmicas, revistas e sites de fornecedores