Filtre de painting ou de génération de modèle numérique de terrain (MNT ou DEM) sous contraintes à partir d'une texture ou l'écran vers une texture ou l'écran. Ceci correpond à une Implémentation complète du MCMD en gpu. Ce pipeline est capable de calculer un MCMD indépendamment sur chacune des 4 composantes de couleur. Voir "Farès Belhadj. Modélisation automatique de géo-environnements naturels et multi-urbains. Thèse de doctorat en Informatique de l'Université Paris 8, soutenue le 11 décembre 2007.".
Plus de détails...
#include <assert.h>
#include "gl4du.h"
#include "gl4df.h"
#include "gl4dfCommon.h"
Aller au code source de ce fichier.
|
static int | nbLevels (int w, int h) |
|
static int | mdTexData (unsigned int w, unsigned int h) |
|
static void | init (void) |
|
static void | quit (void) |
|
| MKFWINIT3 (fractalPainting, void, GLuint, GLuint, GLboolean) |
|
void | gl4dfMCMD (GLuint in, GLuint out, GLboolean flipV) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDDimensions (GLuint width, GLuint height) |
| A documenter. Plus de détails...
|
|
static void | fractalPaintingfinit (GLuint in, GLuint out, GLboolean flipV) |
|
static void | fractalPaintingffunc (GLuint in, GLuint out, GLboolean flipV) |
|
void | gl4dfMCMDTakeColor (GLboolean mcmd_take_color) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDChangeSeed (GLboolean change_seed) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDSetSkeletonize (GLboolean skeletonize) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDSetIr (const GLfloat *mcmd_Ir) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDSetI (const GLfloat *mcmd_I) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDSetNoiseH (const GLfloat *mcmd_noise_H) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDSetNoiseS (const GLfloat *mcmd_noise_S) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDSetNoiseT (const GLfloat *mcmd_noise_T) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDSetNoisePhaseChange (const GLfloat *mcmd_noise_phase_change) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDSetSkeletonizeRandThreshold (GLfloat rand_threshold) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDSetMDBUVersion (GLuint version) |
| A documenter. Plus de détails...
|
|
void | gl4dfMCMDSetSubdivisionMethod (GLuint method) |
| Permet de modifier la méthode de subdivision utilisée : 0 Triangle-Edge, 1 Diamond-Square. Plus de détails...
|
|
void | gl4dMCMDSetUseRoughnessMap (GLuint map_tex_id) |
| Permet d'indiquer l'usage ou non d'une map (texture) pour récupérer les valeurs locales de roughness. Plus de détails...
|
|
void | gl4dMCMDSetUseInterpolationMap (GLuint map_tex_id) |
| Permet d'indiquer l'usage ou non d'une map (texture) pour récupérer les valeurs locales d'interpolation. Plus de détails...
|
|
void | gl4dMCMDSetUseExtrapolationMap (GLuint map_tex_id) |
| Permet d'indiquer l'usage ou non d'une map (texture) pour récupérer les valeurs locales d'extrapolation. Plus de détails...
|
|
void | gl4dMCMDSetUseNoiseScaleMap (GLuint map_tex_id) |
| Permet d'indiquer l'usage ou non d'une map (texture) pour récupérer les valeurs locales de noise scale. Plus de détails...
|
|
void | gl4dMCMDSetUseNoiseTranslateMap (GLuint map_tex_id) |
| Permet d'indiquer l'usage ou non d'une map (texture) pour récupérer les valeurs locales de noise translate. Plus de détails...
|
|
static void | llAdd (ll_t **here, GLushort x, GLushort y) |
|
static void | llInsert (ll_t **head, GLushort x, GLushort y) |
|
static void | llFree (ll_t **head) |
|
static ll_t ** | llMapNew (GLushort mapWidth, GLushort mapHeight) |
|
static void | llMapFree (ll_t **llmap, GLushort mapWidth, GLushort mapHeight) |
|
static GLushort | getParentDataX (GLubyte *parentData, GLushort mapWidth, int x, int y, int i) |
|
static GLushort | getParentDataY (GLubyte *parentData, GLushort mapWidth, int x, int y, int i) |
|
static void | setParentDataX (GLubyte *parentData, GLushort value, GLushort mapWidth, int x, int y, int i) |
|
static void | setParentDataY (GLubyte *parentData, GLushort value, GLushort mapWidth, int x, int y, int i) |
|
static void | triangleEdge (GLubyte *parentData, GLubyte *levelData, ll_t **llmap, GLushort mapWidth, GLushort mapHeight, int x0, int y0, int w, int h, int current_level, int computing_level) |
|
static void | diamondSquare (GLubyte *parentData, GLubyte *levelData, ll_t **llmap, GLushort mapWidth, GLushort mapHeight, int x0, int y0, int w, int h, int current_level, int computing_level) |
|
static void | subdivision2Tex (GLubyte **parentData, GLubyte **levelData, GLushort **childData, GLuint *childDataSize, GLubyte **childPos, unsigned int w, unsigned int h) |
|
|
static GLuint | _pId [5] = { 0 } |
|
static GLuint | _mdbu_version = 1 + 2 |
|
static GLuint | _subdivision_method = 0 |
|
static GLuint | _mdTexId [4] = { 0 } |
|
static GLuint | _buTreeSize = 0 |
|
static GLuint | _buTreeWidth = 0 |
|
static GLuint | _buTreeHeight = 0 |
|
static GLuint | _tempTexId [3] = { 0 } |
|
static GLuint | _width = 512 |
|
static GLuint | _height = 512 |
|
static GLuint | _mcmd_H_map_tex_id = 0 |
|
static GLuint | _mcmd_I_map_tex_id = 0 |
|
static GLuint | _mcmd_Ir_map_tex_id = 0 |
|
static GLuint | _mcmd_NS_map_tex_id = 0 |
|
static GLuint | _mcmd_NT_map_tex_id = 0 |
|
static int | _maxLevel = -1 |
|
static GLfloat | _rand_threshold = 1.0f |
|
static GLfloat | _seed = 0.0f |
|
static GLboolean | _skeletonize = GL_FALSE |
|
static GLboolean | _change_seed = GL_FALSE |
|
static GLboolean | _mcmd_take_color = GL_FALSE |
|
static GLfloat | _mcmd_Ir [4] = { 1.0f, 1.0f, 1.0f, 1.0f } |
|
static GLfloat | _mcmd_noise_H [4] = { 1.0f, 1.0f, 1.0f, 1.0f } |
|
static GLfloat | _mcmd_noise_S [4] = { 1.0f, 1.0f, 1.0f, 1.0f } |
|
static GLfloat | _mcmd_noise_T [4] = { 0.0f, 0.0f, 0.0f, 0.0f } |
|
static GLfloat | _mcmd_noise_phase_change [4] = { 0.0f, 0.0f, 0.0f, 0.0f } |
|
static GLfloat | _mcmd_I [4] = { 1.0f, 1.0f, 1.0f, 1.0f } |
|
static const char * | gl4dfMCMD_select4mcmdFS |
|
static const char * | gl4dfMCMD_mdFS |
|
static const char * | gl4dfMCMD_mdLocalFS |
|
static const char * | gl4dfMCMD_mdbuV0FS |
|
static const char * | gl4dfMCMD_mdbuV1FS |
|
static const char * | gl4dfMCMD_mdbuV1FSOld |
|
static void(* | _subdivision_func [])(GLubyte *, GLubyte *, ll_t **, GLushort, GLushort, int, int, int, int, int, int) |
|
Filtre de painting ou de génération de modèle numérique de terrain (MNT ou DEM) sous contraintes à partir d'une texture ou l'écran vers une texture ou l'écran. Ceci correpond à une Implémentation complète du MCMD en gpu. Ce pipeline est capable de calculer un MCMD indépendamment sur chacune des 4 composantes de couleur. Voir "Farès Belhadj. Modélisation automatique de géo-environnements naturels et multi-urbains. Thèse de doctorat en Informatique de l'Université Paris 8, soutenue le 11 décembre 2007.".
- Auteur
- Farès BELHADJ amsi@.nosp@m.ai.u.nosp@m.niv-p.nosp@m.aris.nosp@m.8.fr
- Date
- december 2010 - october 25, 2017
- A faire:
- remplacer l'usage de la liste chainÉe par quelque chose de plus efficace.
Définition dans le fichier gl4dfFractalPainting.c.
◆ getChildPos
#define getChildPos |
( |
|
cmap, |
|
|
|
i |
|
) |
| |
Valeur : ( (((unsigned long)((cmap)[4 * (i) + 0])) << 24) | \
(((unsigned long)((cmap)[4 * (i) + 1])) << 16) | \
(((unsigned long)((cmap)[4 * (i) + 2])) << 8) | \
(((unsigned long)((cmap)[4 * (i) + 3])) << 0) )
◆ InMap
#define InMap |
( |
|
x, |
|
|
|
y, |
|
|
|
w, |
|
|
|
h |
|
) |
| ( (x) >= 0 && (x) < (w) && (y) >= 0 && (y) < (h) ) |
◆ putChildPos
#define putChildPos |
( |
|
cmap, |
|
|
|
i, |
|
|
|
v |
|
) |
| |
Valeur : do {\
(cmap)[4 * (i) + 0] = ((v) >> 24) & 0xFF; \
(cmap)[4 * (i) + 1] = ((v) >> 16) & 0xFF; \
(cmap)[4 * (i) + 2] = ((v) >> 8) & 0xFF; \
(cmap)[4 * (i) + 3] = ((v)) & 0xFF; \
} while(0)
◆ UNDEFINED_CHILD
#define UNDEFINED_CHILD ((GLushort)-1) |
◆ UNDEFINED_PARENT
#define UNDEFINED_PARENT ((GLushort)-1) |
◆ ll_t
◆ diamondSquare()
static void diamondSquare |
( |
GLubyte * |
parentData, |
|
|
GLubyte * |
levelData, |
|
|
ll_t ** |
llmap, |
|
|
GLushort |
mapWidth, |
|
|
GLushort |
mapHeight, |
|
|
int |
x0, |
|
|
int |
y0, |
|
|
int |
w, |
|
|
int |
h, |
|
|
int |
current_level, |
|
|
int |
computing_level |
|
) |
| |
|
static |
875 int x[14], y[14], i, w_2, w_21, h_2, h_21;
876 w_2 = w >> 1; w_21 = w_2 + (w & 1);
877 h_2 = h >> 1; h_21 = h_2 + (h & 1);
879 if(current_level < computing_level) {
880 if((++current_level) & 1)
881 diamondSquare(parentData, levelData, llmap, mapWidth, mapHeight, x0, y0, w, h, current_level, computing_level);
882 else if(w_21 > 1 || h_21 > 1) {
883 x[7] = x[0] = x0; x[9] = x[1] = x0 + w_2;
884 y[1] = y[0] = y0; y[7] = y[9] = y0 + h_2;
885 diamondSquare(parentData, levelData, llmap, mapWidth, mapHeight, x[0], y[0], w_2, h_2, current_level, computing_level);
886 diamondSquare(parentData, levelData, llmap, mapWidth, mapHeight, x[1], y[1], w_21, h_2, current_level, computing_level);
887 diamondSquare(parentData, levelData, llmap, mapWidth, mapHeight, x[9], y[9], w_21, h_21, current_level, computing_level);
888 diamondSquare(parentData, levelData, llmap, mapWidth, mapHeight, x[7], y[7], w_2, h_21, current_level, computing_level);
890 }
else if(current_level & 1) {
892 x[6] = x[7] = x[8] = x[0] = x0;
893 x[10] = x[12] = x[5] = x[9] = x[1] = x0 + w_2;
894 x[3] = x[4] = x[2] = x0 + w;
895 x[11] = x0 + w + w_21; x[13] = x0 - w_2;
896 y[1] = y[2] = y[8] = y[0] = y0;
897 y[11] = y[13] = y[7] = y[9] = y[3] = y0 + h_2;
898 y[5] = y[6] = y[4] = y0 + h;
899 y[10] = y0 - h_2; y[12] = y0 + h + h_21;
902 else if(!w_2 && h_2) {
904 }
else if(!w_2 && !h_2)
906 for(i = d; i < 8; i += p) {
908 levelData[y[i] * mapWidth + x[i]] = current_level;
915 if(
InMap(x[i], y[i], mapWidth, mapHeight)) {
916 llInsert(&(llmap[y[i - 1] * mapWidth + x[i - 1]]), x[i], y[i]);
917 assert(x[i - 1] != x[i] || y[i - 1] != y[i]);
918 llInsert(&(llmap[y[i + 1] * mapWidth + x[i + 1]]), x[i], y[i]);
919 assert(x[i + 1] != x[i] || y[i + 1] != y[i]);
920 llInsert(&(llmap[y[9] * mapWidth + x[9]]), x[i], y[i]);
921 assert(x[9] != x[i] || y[9] != y[i]);
923 if(x[i + 9 - ((i - 1) >> 1)] >= 0 && x[i + 9 - ((i - 1) >> 1)] < mapWidth &&
924 y[i + 9 - ((i - 1) >> 1)] >= 0 && y[i + 9 - ((i - 1) >> 1)] < mapHeight) {
925 setParentDataX(parentData, x[i + 9 - ((i - 1) >> 1)], mapWidth, x[i], y[i], 3);
926 setParentDataY(parentData, y[i + 9 - ((i - 1) >> 1)], mapWidth, x[i], y[i], 3);
927 if(
InMap(x[i], y[i], mapWidth, mapHeight)) {
928 llInsert(&(llmap[y[i + 9 - ((i - 1) >> 1)] * mapWidth + x[i + 9 - ((i - 1) >> 1)]]), x[i], y[i]);
929 assert(x[i + 9 - ((i - 1) >> 1)] != x[i] || y[i + 9 - ((i - 1) >> 1)] != y[i]);
934 }
else if(w_2 || h_2) {
935 x[6] = x[0] = x0; x[9] = x0 + w_2; x[4] = x[2] = x0 + w;
936 y[2] = y[0] = y0; y[9] = y0 + h_2; y[6] = y[4] = y0 + h;
938 levelData[y[9] * mapWidth + x[9]] = current_level;
939 for(i = 0; i < 4; i++) {
942 if(
InMap(x[i << 1], y[i << 1], mapWidth, mapHeight)) {
943 llInsert(&(llmap[y[i << 1] * mapWidth + x[i << 1]]), x[9], y[9]);
944 assert(x[i << 1] != x[9] || y[i << 1] != y[9]);
Références getParentDataX(), InMap, llInsert(), setParentDataX(), setParentDataY(), UNDEFINED_PARENT, ll_t::x, et ll_t::y.
◆ fractalPaintingffunc()
static void fractalPaintingffunc |
( |
GLuint |
in, |
|
|
GLuint |
out, |
|
|
GLboolean |
flipV |
|
) |
| |
|
static |
77 GLint i, ati = 0, vp[4], polygonMode[2], cpId = 0, cfbo, end, n;
78 GLboolean dt = glIsEnabled(GL_DEPTH_TEST), bl = glIsEnabled(GL_BLEND), tex = glIsEnabled(GL_TEXTURE_2D);
83 for(i = 0, Hf = 1.0f; i < 4; ++i)
86 for(i = 0, Hf = 0.5f; i < 4; ++i)
89 glEnable(GL_TEXTURE_2D);
91 glDisable(GL_DEPTH_TEST);
92 glGetIntegerv(GL_POLYGON_MODE, polygonMode);
93 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
94 glGetIntegerv(GL_VIEWPORT, vp);
95 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &cfbo);
96 glGetIntegerv(GL_CURRENT_PROGRAM, &cpId);
97 glGenFramebuffers(1, &fbo);
110 glBindFramebuffer(GL_FRAMEBUFFER, fbo); {
113 glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
_tempTexId[1], 0);
114 glUseProgram(
_pId[1]);
116 glUniform1i(glGetUniformLocation(
_pId[1],
"etage0"), 0);
117 glUniform1i(glGetUniformLocation(
_pId[1],
"inv"), 0);
118 glUniform1i(glGetUniformLocation(
_pId[1],
"width"),
_width);
119 glUniform1i(glGetUniformLocation(
_pId[1],
"height"),
_height);
120 glActiveTexture(GL_TEXTURE0);
127 glActiveTexture(GL_TEXTURE3); glBindTexture(GL_TEXTURE_2D,
_tempTexId[2]);
128 glActiveTexture(GL_TEXTURE2); glBindTexture(GL_TEXTURE_2D,
_mdTexId[3]);
129 glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D,
_mdTexId[2]);
144 for(i = 0, ati = 0; i < end; i++) {
145 glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
_tempTexId[ati], 0);
147 glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D,
_tempTexId[ati]);
150 glActiveTexture(GL_TEXTURE4); glBindTexture(GL_TEXTURE_2D, 0);
151 glActiveTexture(GL_TEXTURE3); glBindTexture(GL_TEXTURE_2D, 0);
152 glActiveTexture(GL_TEXTURE0);
155 glUseProgram(
_pId[md]);
160 glActiveTexture(GL_TEXTURE2); glBindTexture(GL_TEXTURE_2D,
_mdTexId[1]);
161 glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D,
_mdTexId[0]);
162 glUniform1i(glGetUniformLocation(
_pId[md],
"etage0"), 0);
163 glUniform1i(glGetUniformLocation(
_pId[md],
"etage1"), 1);
164 glUniform1i(glGetUniformLocation(
_pId[md],
"etage2"), 2);
165 glUniform1i(glGetUniformLocation(
_pId[md],
"etage3"), 3);
166 glUniform1i(glGetUniformLocation(
_pId[md],
"etage4"), 4);
167 glUniform1i(glGetUniformLocation(
_pId[md],
"etage5"), 5);
168 glUniform1i(glGetUniformLocation(
_pId[md],
"etage6"), 6);
173 glUniform1i(glGetUniformLocation(
_pId[md],
"width"),
_width);
174 glUniform1i(glGetUniformLocation(
_pId[md],
"height"),
_height);
175 glUniform1i(glGetUniformLocation(
_pId[md],
"maxLevel"),
_maxLevel);
176 glUniform4fv(glGetUniformLocation(
_pId[md],
"mcmd_noise_H"), 1, H);
177 glUniform1f(glGetUniformLocation(
_pId[md],
"local_Hf"), Hf);
181 glUniform4fv(glGetUniformLocation(
_pId[md],
"mcmd_I"), 1,
_mcmd_I);
182 glUniform1f(glGetUniformLocation(
_pId[md],
"seed"),
_seed);
186 glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
_tempTexId[ati], 0);
188 glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D,
_tempTexId[ati]);
189 glUniform1i(glGetUniformLocation(
_pId[md],
"level"), i);
193 glActiveTexture(GL_TEXTURE6); glBindTexture(GL_TEXTURE_2D, 0);
194 glActiveTexture(GL_TEXTURE5); glBindTexture(GL_TEXTURE_2D, 0);
195 glActiveTexture(GL_TEXTURE4); glBindTexture(GL_TEXTURE_2D, 0);
196 glActiveTexture(GL_TEXTURE3); glBindTexture(GL_TEXTURE_2D, 0);
197 glActiveTexture(GL_TEXTURE2); glBindTexture(GL_TEXTURE_2D, 0);
198 glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, 0);
199 glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, 0);
202 glViewport(vp[0], vp[1], vp[2], vp[3]);
205 glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
207 glBlitFramebuffer(0, 0,
_width,
_height, vp[0], vp[1] + vp[3], vp[0] + vp[2], vp[1], GL_COLOR_BUFFER_BIT, GL_LINEAR);
209 glBlitFramebuffer(0, 0,
_width,
_height, vp[0], vp[1], vp[0] + vp[2], vp[1] + vp[3], GL_COLOR_BUFFER_BIT, GL_LINEAR);
212 glDeleteFramebuffers(1, &fbo);
213 glBindFramebuffer(GL_FRAMEBUFFER, (GLuint)cfbo);
214 glPolygonMode(GL_FRONT_AND_BACK, polygonMode[0]);
216 if(dt) glEnable(GL_DEPTH_TEST);
217 if(bl) glEnable(GL_BLEND);
218 if(!tex) glDisable(GL_TEXTURE_2D);
Références _buTreeHeight, _buTreeSize, _buTreeWidth, _change_seed, _height, _maxLevel, _mcmd_H_map_tex_id, _mcmd_I, _mcmd_I_map_tex_id, _mcmd_Ir, _mcmd_Ir_map_tex_id, _mcmd_noise_H, _mcmd_noise_phase_change, _mcmd_noise_S, _mcmd_noise_T, _mcmd_NS_map_tex_id, _mcmd_NT_map_tex_id, _mcmd_take_color, _mdbu_version, _mdTexId, _pId, _rand_threshold, _seed, _skeletonize, _subdivision_method, _tempTexId, _width, fcommGetPlane(), gl4dfConvFrame2Tex(), gl4dfConvSetFilter(), gl4dfConvTex2Tex(), gl4dgDraw(), in(), et nbLevels().
Référencé par fractalPaintingfinit(), gl4dfMCMDDimensions(), et gl4dfMCMDSetSubdivisionMethod().
◆ fractalPaintingfinit()
static void fractalPaintingfinit |
( |
GLuint |
in, |
|
|
GLuint |
out, |
|
|
GLboolean |
flipV |
|
) |
| |
|
static |
◆ getParentDataX()
static GLushort getParentDataX |
( |
GLubyte * |
parentData, |
|
|
GLushort |
mapWidth, |
|
|
int |
x, |
|
|
int |
y, |
|
|
int |
i |
|
) |
| |
|
inlinestatic |
◆ getParentDataY()
static GLushort getParentDataY |
( |
GLubyte * |
parentData, |
|
|
GLushort |
mapWidth, |
|
|
int |
x, |
|
|
int |
y, |
|
|
int |
i |
|
) |
| |
|
inlinestatic |
799 int d = ((y * mapWidth + x) << 4) + (i << 2) + 2;
800 return (((GLushort)parentData[d]) << 8) | ((GLushort)parentData[d + 1]);
Références ll_t::x, et ll_t::y.
◆ gl4dfMCMD()
void gl4dfMCMD |
( |
GLuint |
in, |
|
|
GLuint |
out, |
|
|
GLboolean |
flipV |
|
) |
| |
A documenter.
- A faire:
- A documenter
46 fractalPaintingfptr(
in, out, flipV);
Références in().
◆ gl4dfMCMDChangeSeed()
void gl4dfMCMDChangeSeed |
( |
GLboolean |
change_seed | ) |
|
◆ gl4dfMCMDDimensions()
void gl4dfMCMDDimensions |
( |
GLuint |
, |
|
|
GLuint |
|
|
) |
| |
A documenter.
- A faire:
- A documenter
50 int d = (int)ceil(log(width) / log(2.0));
51 if(width != (GLuint)(1 << d)) {
53 "%s:%d: les dimensions du MCMD sont des puissances de 2. Conversion a la puissance de 2 superieure.\n",
57 d = (int)ceil(log(height) / log(2.0));
58 if(height != (GLuint)(1 << d)) {
60 "%s:%d: les dimensions du MCMD sont des puissances de 2. Conversion a la puissance de 2 superieure.\n",
Références _height, _width, fractalPaintingffunc(), et init().
◆ gl4dfMCMDSetI()
void gl4dfMCMDSetI |
( |
const GLfloat * |
mcmd_I | ) |
|
◆ gl4dfMCMDSetIr()
void gl4dfMCMDSetIr |
( |
const GLfloat * |
mcmd_Ir | ) |
|
A documenter.
Ir > 0 extrapolation vers le bas, Ir < 0 extrapolation vers le haut. Ir nul extrapolation en maintenant la même altitude. |Ir| < 1 croissance ou décroissance lente. |Ir| < 1 croissance ou décroissance rapide. |Ir| égale à 1 croissance ou décroissance linéaire.
- A faire:
- A documenter
Références _mcmd_Ir.
◆ gl4dfMCMDSetMDBUVersion()
void gl4dfMCMDSetMDBUVersion |
( |
GLuint |
version | ) |
|
◆ gl4dfMCMDSetNoiseH()
void gl4dfMCMDSetNoiseH |
( |
const GLfloat * |
mcmd_noise_H | ) |
|
◆ gl4dfMCMDSetNoisePhaseChange()
void gl4dfMCMDSetNoisePhaseChange |
( |
const GLfloat * |
mcmd_noise_phase_change | ) |
|
◆ gl4dfMCMDSetNoiseS()
void gl4dfMCMDSetNoiseS |
( |
const GLfloat * |
mcmd_noise_S | ) |
|
◆ gl4dfMCMDSetNoiseT()
void gl4dfMCMDSetNoiseT |
( |
const GLfloat * |
mcmd_noise_T | ) |
|
◆ gl4dfMCMDSetSkeletonize()
void gl4dfMCMDSetSkeletonize |
( |
GLboolean |
skeletonize | ) |
|
◆ gl4dfMCMDSetSkeletonizeRandThreshold()
void gl4dfMCMDSetSkeletonizeRandThreshold |
( |
GLfloat |
rand_threshold | ) |
|
◆ gl4dfMCMDSetSubdivisionMethod()
void gl4dfMCMDSetSubdivisionMethod |
( |
GLuint |
method | ) |
|
Permet de modifier la méthode de subdivision utilisée : 0 Triangle-Edge, 1 Diamond-Square.
- Paramètres
-
method | si 0 subdivision Triangle-Edge, si 1 subdivision Diamond-Square. |
Références _subdivision_method, fractalPaintingffunc(), et init().
◆ gl4dfMCMDTakeColor()
void gl4dfMCMDTakeColor |
( |
GLboolean |
mcmd_take_color | ) |
|
◆ gl4dMCMDSetUseExtrapolationMap()
void gl4dMCMDSetUseExtrapolationMap |
( |
GLuint |
map_tex_id | ) |
|
Permet d'indiquer l'usage ou non d'une map (texture) pour récupérer les valeurs locales d'extrapolation.
- Paramètres
-
map_tex_id | si 0, pas de valeurs locale d'extrapolation (la globale est utilisée, voir gl4dfMCMDSetIr), sinon l'identifiant de la texture servira de map d'extrapolation. |
Références _mcmd_Ir_map_tex_id, _mdbu_version, et gl4dfMCMDSetMDBUVersion().
◆ gl4dMCMDSetUseInterpolationMap()
void gl4dMCMDSetUseInterpolationMap |
( |
GLuint |
map_tex_id | ) |
|
Permet d'indiquer l'usage ou non d'une map (texture) pour récupérer les valeurs locales d'interpolation.
- Paramètres
-
map_tex_id | si 0, pas de valeurs locales d'interpolation (la globale est utilisée, voir gl4dfMCMDSetI), sinon l'identifiant de la texture servira de map d'interpolation. |
Références _mcmd_I_map_tex_id, _mdbu_version, et gl4dfMCMDSetMDBUVersion().
◆ gl4dMCMDSetUseNoiseScaleMap()
void gl4dMCMDSetUseNoiseScaleMap |
( |
GLuint |
map_tex_id | ) |
|
Permet d'indiquer l'usage ou non d'une map (texture) pour récupérer les valeurs locales de noise scale.
- Paramètres
-
map_tex_id | si 0, pas de valeurs locale de noise scale (la globale est utilisée, voir gl4dfMCMDSetNoiseS), sinon l'identifiant de la texture servira de map de noise scale. |
Références _mcmd_NS_map_tex_id.
◆ gl4dMCMDSetUseNoiseTranslateMap()
void gl4dMCMDSetUseNoiseTranslateMap |
( |
GLuint |
map_tex_id | ) |
|
Permet d'indiquer l'usage ou non d'une map (texture) pour récupérer les valeurs locales de noise translate.
- Paramètres
-
map_tex_id | si 0, pas de valeurs locale de noise translate (la globale est utilisée, voir gl4dfMCMDSetNoiseS), sinon l'identifiant de la texture servira de map de noise translate. |
Références _mcmd_NT_map_tex_id.
◆ gl4dMCMDSetUseRoughnessMap()
void gl4dMCMDSetUseRoughnessMap |
( |
GLuint |
map_tex_id | ) |
|
◆ init()
static void init |
( |
void |
| ) |
|
|
static |
700 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
701 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
702 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
703 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
704 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F,
_width,
_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
706 glBindTexture(GL_TEXTURE_2D, 0);
Références _height, _maxLevel, _mdTexId, _pId, _tempTexId, _width, gl4dfBasicVS, gl4dfMCMD_mdbuV0FS, gl4dfMCMD_mdbuV1FS, gl4dfMCMD_mdFS, gl4dfMCMD_mdLocalFS, gl4dfMCMD_select4mcmdFS, gl4duAtExit(), gl4duCreateProgram(), mdTexData(), et quit().
Référencé par fractalPaintingfinit(), gl4dfMCMDDimensions(), et gl4dfMCMDSetSubdivisionMethod().
◆ llAdd()
static void llAdd |
( |
ll_t ** |
here, |
|
|
GLushort |
x, |
|
|
GLushort |
y |
|
) |
| |
|
inlinestatic |
◆ llFree()
static void llFree |
( |
ll_t ** |
head | ) |
|
|
inlinestatic |
◆ llInsert()
static void llInsert |
( |
ll_t ** |
head, |
|
|
GLushort |
x, |
|
|
GLushort |
y |
|
) |
| |
|
inlinestatic |
◆ llMapFree()
static void llMapFree |
( |
ll_t ** |
llmap, |
|
|
GLushort |
mapWidth, |
|
|
GLushort |
mapHeight |
|
) |
| |
|
inlinestatic |
◆ llMapNew()
static ll_t** llMapNew |
( |
GLushort |
mapWidth, |
|
|
GLushort |
mapHeight |
|
) |
| |
|
inlinestatic |
◆ mdTexData()
static int mdTexData |
( |
unsigned int |
w, |
|
|
unsigned int |
h |
|
) |
| |
|
static |
993 GLushort * childData;
994 GLubyte * childPos, * parentData = NULL, * levelData = NULL;
998 glBindTexture(GL_TEXTURE_2D,
_mdTexId[3]);
999 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
1000 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
1001 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1002 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST);
1006 GLushort * temp_childData = childData;
1008 if(childData == NULL) {
1009 free(temp_childData);
1010 fprintf(stderr,
"At %s:%d: failed to realloc memory, aborting...\n", __FILE__, __LINE__ - 2);
1014 glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT,
_buTreeWidth,
_buTreeHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, childData);
1017 glBindTexture(GL_TEXTURE_2D,
_mdTexId[2]);
1018 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
1019 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
1020 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1021 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST);
1022 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, childPos);
1025 glBindTexture(GL_TEXTURE_2D,
_mdTexId[1]);
1026 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
1027 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
1028 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1029 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST);
1030 glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, w, h, 0, GL_RED, GL_UNSIGNED_BYTE, levelData);
1031 for(i = l = 0; i < w * h; i++)
1032 if(levelData[i] != 255 && l < levelData[i])
1036 glBindTexture(GL_TEXTURE_2D,
_mdTexId[0]);
1037 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
1038 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
1039 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1040 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST);
1041 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4 * w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, parentData);
Références _buTreeHeight, _buTreeSize, _buTreeWidth, _mdTexId, et subdivision2Tex().
Référencé par init().
◆ MKFWINIT3()
MKFWINIT3 |
( |
fractalPainting |
, |
|
|
void |
, |
|
|
GLuint |
, |
|
|
GLuint |
, |
|
|
GLboolean |
|
|
) |
| |
◆ nbLevels()
static int nbLevels |
( |
int |
w, |
|
|
int |
h |
|
) |
| |
|
inlinestatic |
◆ quit()
static void quit |
( |
void |
| ) |
|
|
static |
◆ setParentDataX()
static void setParentDataX |
( |
GLubyte * |
parentData, |
|
|
GLushort |
value, |
|
|
GLushort |
mapWidth, |
|
|
int |
x, |
|
|
int |
y, |
|
|
int |
i |
|
) |
| |
|
inlinestatic |
804 int d = ((y * mapWidth + x) << 4) + (i << 2);
805 parentData[d] = (GLubyte)(value >> 8);
806 parentData[d + 1] = (GLubyte)(value & 0xFF);
Références ll_t::x, et ll_t::y.
Référencé par diamondSquare(), et triangleEdge().
◆ setParentDataY()
static void setParentDataY |
( |
GLubyte * |
parentData, |
|
|
GLushort |
value, |
|
|
GLushort |
mapWidth, |
|
|
int |
x, |
|
|
int |
y, |
|
|
int |
i |
|
) |
| |
|
inlinestatic |
810 int d = ((y * mapWidth + x) << 4) + (i << 2) + 2;
811 parentData[d] = (GLubyte)(value >> 8);
812 parentData[d + 1] = (GLubyte)(value & 0xFF);
Références ll_t::x, et ll_t::y.
Référencé par diamondSquare(), et triangleEdge().
◆ subdivision2Tex()
static void subdivision2Tex |
( |
GLubyte ** |
parentData, |
|
|
GLubyte ** |
levelData, |
|
|
GLushort ** |
childData, |
|
|
GLuint * |
childDataSize, |
|
|
GLubyte ** |
childPos, |
|
|
unsigned int |
w, |
|
|
unsigned int |
h |
|
) |
| |
|
static |
958 unsigned int i, l, n;
960 *parentData = malloc(4 * w * 4 * h *
sizeof ** parentData); assert(*parentData);
961 *levelData = malloc(w * h *
sizeof ** levelData); assert(*levelData);
962 *childData = malloc((*childDataSize = 2) *
sizeof ** childData); assert(*childData);
963 *childPos = malloc(4 * w * h *
sizeof ** childPos); assert(*childPos);
965 memset(*parentData, 0xFF, 4 * w * 4 * h *
sizeof ** parentData);
966 memset(*levelData, 0xFF, w * h *
sizeof ** levelData);
967 for(i = 0, n =
nbLevels(w, h); i < n; i++)
968 _subdivision_func[
_subdivision_method](*parentData, *levelData, llmap, w, h, 0, 0, w - 1, h - 1, 0, i);
970 for(i = 0, l = 0; i < w * h; i++) {
973 for(ptr = llmap[i], sl = 0; ; ptr = ptr->
next) {
976 if(l == *childDataSize) {
977 (*childData) = realloc(*childData, (*childDataSize <<= 1) *
sizeof ** childData);
982 else if(maxsl < ++sl)
Références _subdivision_func, _subdivision_method, llMapFree(), llMapNew(), nbLevels(), ll_t::next, putChildPos, UNDEFINED_CHILD, ll_t::x, et ll_t::y.
Référencé par mdTexData().
◆ triangleEdge()
static void triangleEdge |
( |
GLubyte * |
parentData, |
|
|
GLubyte * |
levelData, |
|
|
ll_t ** |
llmap, |
|
|
GLushort |
mapWidth, |
|
|
GLushort |
mapHeight, |
|
|
int |
x0, |
|
|
int |
y0, |
|
|
int |
w, |
|
|
int |
h, |
|
|
int |
current_level, |
|
|
int |
computing_level |
|
) |
| |
|
static |
816 int x[10], y[10], i, w_2, w_21, h_2, h_21;
817 w_2 = w >> 1; w_21 = w_2 + (w & 1);
818 h_2 = h >> 1; h_21 = h_2 + (h & 1);
820 if(current_level < computing_level) {
822 if(w_21 > 1 || h_21 > 1) {
823 x[7] = x[0] = x0; x[9] = x[1] = x0 + w_2;
824 y[1] = y[0] = y0; y[7] = y[9] = y0 + h_2;
825 triangleEdge(parentData, levelData, llmap, mapWidth, mapHeight, x[0], y[0], w_2, h_2, current_level, computing_level);
826 triangleEdge(parentData, levelData, llmap, mapWidth, mapHeight, x[1], y[1], w_21, h_2, current_level, computing_level);
827 triangleEdge(parentData, levelData, llmap, mapWidth, mapHeight, x[9], y[9], w_21, h_21, current_level, computing_level);
828 triangleEdge(parentData, levelData, llmap, mapWidth, mapHeight, x[7], y[7], w_2, h_21, current_level, computing_level);
836 x[6] = x[7] = x[8] = x[0] = x0;
837 x[5] = x[9] = x[1] = x0 + w_2;
838 x[3] = x[4] = x[2] = x0 + w;
839 y[1] = y[2] = y[8] = y[0] = y0;
840 y[7] = y[9] = y[3] = y0 + h_2;
841 y[5] = y[6] = y[4] = y0 + h;
842 for(i = 1; i < 8; i += 2) {
844 levelData[y[i] * mapWidth + x[i]] = current_level;
849 if(
InMap(x[i], y[i], mapWidth, mapHeight)) {
850 llInsert(&(llmap[y[i - 1] * mapWidth + x[i - 1]]), x[i], y[i]);
852 assert(x[i - 1] != x[i] || y[i - 1] != y[i]);
853 llInsert(&(llmap[y[i + 1] * mapWidth + x[i + 1]]), x[i], y[i]);
855 assert(x[i + 1] != x[i] || y[i + 1] != y[i]);
860 levelData[y[9] * mapWidth + x[9]] = current_level;
861 for(i = 0; i < 4; ++i) {
865 if(
InMap(x[9], y[9], mapWidth, mapHeight)) {
866 for(i = 0; i < 4; ++i) {
867 llInsert(&(llmap[y[i << 1] * mapWidth + x[i << 1]]), x[9], y[9]);
868 assert(x[i << 1] != x[9] || y[i << 1] != y[9]);
Références getParentDataX(), InMap, llInsert(), setParentDataX(), setParentDataY(), UNDEFINED_PARENT, ll_t::x, et ll_t::y.
◆ _buTreeHeight
◆ _buTreeSize
◆ _buTreeWidth
◆ _change_seed
GLboolean _change_seed = GL_FALSE |
|
static |
◆ _height
◆ _maxLevel
◆ _mcmd_H_map_tex_id
GLuint _mcmd_H_map_tex_id = 0 |
|
static |
◆ _mcmd_I
GLfloat _mcmd_I[4] = { 1.0f, 1.0f, 1.0f, 1.0f } |
|
static |
◆ _mcmd_I_map_tex_id
GLuint _mcmd_I_map_tex_id = 0 |
|
static |
◆ _mcmd_Ir
GLfloat _mcmd_Ir[4] = { 1.0f, 1.0f, 1.0f, 1.0f } |
|
static |
◆ _mcmd_Ir_map_tex_id
GLuint _mcmd_Ir_map_tex_id = 0 |
|
static |
◆ _mcmd_noise_H
GLfloat _mcmd_noise_H[4] = { 1.0f, 1.0f, 1.0f, 1.0f } |
|
static |
◆ _mcmd_noise_phase_change
GLfloat _mcmd_noise_phase_change[4] = { 0.0f, 0.0f, 0.0f, 0.0f } |
|
static |
◆ _mcmd_noise_S
GLfloat _mcmd_noise_S[4] = { 1.0f, 1.0f, 1.0f, 1.0f } |
|
static |
◆ _mcmd_noise_T
GLfloat _mcmd_noise_T[4] = { 0.0f, 0.0f, 0.0f, 0.0f } |
|
static |
◆ _mcmd_NS_map_tex_id
GLuint _mcmd_NS_map_tex_id = 0 |
|
static |
◆ _mcmd_NT_map_tex_id
GLuint _mcmd_NT_map_tex_id = 0 |
|
static |
◆ _mcmd_take_color
GLboolean _mcmd_take_color = GL_FALSE |
|
static |
◆ _mdbu_version
GLuint _mdbu_version = 1 + 2 |
|
static |
◆ _mdTexId
GLuint _mdTexId[4] = { 0 } |
|
static |
◆ _pId
◆ _rand_threshold
GLfloat _rand_threshold = 1.0f |
|
static |
◆ _seed
◆ _skeletonize
GLboolean _skeletonize = GL_FALSE |
|
static |
◆ _subdivision_func
void(* _subdivision_func[])(GLubyte *, GLubyte *, ll_t **, GLushort, GLushort, int, int, int, int, int, int) |
|
static |
◆ _subdivision_method
GLuint _subdivision_method = 0 |
|
static |
◆ _tempTexId
GLuint _tempTexId[3] = { 0 } |
|
static |
◆ _width
◆ gl4dfMCMD_mdbuV0FS
const char* gl4dfMCMD_mdbuV0FS |
|
static |
◆ gl4dfMCMD_mdbuV1FS
const char* gl4dfMCMD_mdbuV1FS |
|
static |
◆ gl4dfMCMD_mdbuV1FSOld
const char* gl4dfMCMD_mdbuV1FSOld |
|
static |
◆ gl4dfMCMD_mdFS
const char* gl4dfMCMD_mdFS |
|
static |
◆ gl4dfMCMD_mdLocalFS
const char* gl4dfMCMD_mdLocalFS |
|
static |
◆ gl4dfMCMD_select4mcmdFS
const char* gl4dfMCMD_select4mcmdFS |
|
static |
static GLuint _buTreeSize
Definition: gl4dfFractalPainting.c:29
static GLuint _width
Definition: gl4dfFractalPainting.c:30
static GLboolean _mcmd_take_color
Definition: gl4dfFractalPainting.c:35
static GLuint _tempTexId[3]
Definition: gl4dfFractalPainting.c:29
static GLfloat _rand_threshold
Definition: gl4dfFractalPainting.c:34
#define UNDEFINED_PARENT
Definition: gl4dfFractalPainting.c:730
static const char * gl4dfBasicVS
Definition: gl4dfCommon.h:22
static GLfloat _mcmd_noise_S[4]
Definition: gl4dfFractalPainting.c:38
static void fractalPaintingfinit(GLuint in, GLuint out, GLboolean flipV)
Definition: gl4dfFractalPainting.c:70
static GLfloat _mcmd_Ir[4]
Definition: gl4dfFractalPainting.c:36
static GLuint _subdivision_method
Definition: gl4dfFractalPainting.c:28
static GLuint _pId[5]
Definition: gl4dfFractalPainting.c:28
static int in(void *func, void **funcList, int n)
regarde si le pointeur func est un élément du tableau funcList
Definition: gl4dhAnimeManager.c:143
#define MIN(a, b)
Definition: gl4dm.h:57
static void init(void)
Definition: gl4dfFractalPainting.c:691
static void fractalPaintingffunc(GLuint in, GLuint out, GLboolean flipV)
Definition: gl4dfFractalPainting.c:76
static GLfloat _mcmd_noise_H[4]
Definition: gl4dfFractalPainting.c:37
GL4DAPI void GL4DAPIENTRY gl4dfConvTex2Tex(GLuint in, GLuint out, GLboolean flipV)
Copie la texture identifiée par in dans out. Le mode d'interpolation (par défaut GL_NEAREST) est à re...
Definition: gl4dfConversion.c:72
static GLfloat _mcmd_I[4]
Definition: gl4dfFractalPainting.c:41
static ll_t ** llMapNew(GLushort mapWidth, GLushort mapHeight)
Definition: gl4dfFractalPainting.c:780
static GLuint _mdbu_version
Definition: gl4dfFractalPainting.c:28
static const char * gl4dfMCMD_mdbuV1FS
Definition: gl4dfFractalPainting.c:535
void gl4dgDraw(GLuint id)
Dessine un objet-géométrie dont l'identifiant (référence) est passé en argument.
Definition: gl4dg.c:451
static const char * gl4dfMCMD_mdLocalFS
Definition: gl4dfFractalPainting.c:406
static void llFree(ll_t **head)
Definition: gl4dfFractalPainting.c:770
static GLfloat _seed
Definition: gl4dfFractalPainting.c:34
static GLfloat _mcmd_noise_phase_change[4]
Definition: gl4dfFractalPainting.c:40
static GLuint _mcmd_I_map_tex_id
Definition: gl4dfFractalPainting.c:31
void gl4duAtExit(void(*func)(void))
ajoute func dans la liste des fonctions à appeler lors du gl4duClean avec l'argument GL4DU_AT_EXIT ou...
Definition: gl4du.c:616
struct ll_t * next
Definition: gl4dfFractalPainting.c:748
static GLuint _mcmd_NS_map_tex_id
Definition: gl4dfFractalPainting.c:32
static GLuint _buTreeHeight
Definition: gl4dfFractalPainting.c:29
static void setParentDataY(GLubyte *parentData, GLushort value, GLushort mapWidth, int x, int y, int i)
Definition: gl4dfFractalPainting.c:809
GL4DAPI void GL4DAPIENTRY gl4dfConvSetFilter(GLenum filter)
Indique le filtre à utiliser en cas d'interpolation du Blit. Le filtre par défaut est GL_NEAREST.
Definition: gl4dfConversion.c:101
GLushort x
Definition: gl4dfFractalPainting.c:747
static GLuint _height
Definition: gl4dfFractalPainting.c:30
GL4DAPI void GL4DAPIENTRY gl4dfConvFrame2Tex(GLuint *out)
Envoie le framebuffer actif (ou l'écran) vers une texture.
Definition: gl4dfConversion.c:21
static GLushort getParentDataX(GLubyte *parentData, GLushort mapWidth, int x, int y, int i)
Definition: gl4dfFractalPainting.c:793
static void(* _subdivision_func[])(GLubyte *, GLubyte *, ll_t **, GLushort, GLushort, int, int, int, int, int, int)
Definition: gl4dfFractalPainting.c:951
static void setParentDataX(GLubyte *parentData, GLushort value, GLushort mapWidth, int x, int y, int i)
Definition: gl4dfFractalPainting.c:803
void gl4dfMCMDSetMDBUVersion(GLuint version)
A documenter.
Definition: gl4dfFractalPainting.c:262
static void diamondSquare(GLubyte *parentData, GLubyte *levelData, ll_t **llmap, GLushort mapWidth, GLushort mapHeight, int x0, int y0, int w, int h, int current_level, int computing_level)
Definition: gl4dfFractalPainting.c:874
static int _maxLevel
Definition: gl4dfFractalPainting.c:33
static const char * gl4dfMCMD_mdFS
Definition: gl4dfFractalPainting.c:349
#define UNDEFINED_CHILD
Definition: gl4dfFractalPainting.c:731
static const char * gl4dfMCMD_select4mcmdFS
Definition: gl4dfFractalPainting.c:302
Definition: gl4dfFractalPainting.c:746
#define MAX(a, b)
Definition: gl4dm.h:58
static GLuint _mcmd_H_map_tex_id
Definition: gl4dfFractalPainting.c:31
static GLboolean _skeletonize
Definition: gl4dfFractalPainting.c:35
static void llAdd(ll_t **here, GLushort x, GLushort y)
Definition: gl4dfFractalPainting.c:756
static GLuint _mdTexId[4]
Definition: gl4dfFractalPainting.c:29
GLuint gl4duCreateProgram(const char *firstone,...)
créé un program à partir d'une liste (variable) de nom de fichiers shaders et renvoie l'identifiant o...
Definition: gl4du.c:368
#define putChildPos(cmap, i, v)
Definition: gl4dfFractalPainting.c:734
static void quit(void)
Definition: gl4dfFractalPainting.c:717
GLuint fcommGetPlane(void)
Definition: gl4dfCommon.c:65
static GLfloat _mcmd_noise_T[4]
Definition: gl4dfFractalPainting.c:39
GLushort y
Definition: gl4dfFractalPainting.c:747
static const char * gl4dfMCMD_mdbuV0FS
Definition: gl4dfFractalPainting.c:467
static GLuint _mcmd_Ir_map_tex_id
Definition: gl4dfFractalPainting.c:31
static int nbLevels(int w, int h)
Definition: gl4dfFractalPainting.c:751
#define InMap(x, y, w, h)
Definition: gl4dfFractalPainting.c:732
static GLuint _mcmd_NT_map_tex_id
Definition: gl4dfFractalPainting.c:32
static GLuint _buTreeWidth
Definition: gl4dfFractalPainting.c:29
static void subdivision2Tex(GLubyte **parentData, GLubyte **levelData, GLushort **childData, GLuint *childDataSize, GLubyte **childPos, unsigned int w, unsigned int h)
Definition: gl4dfFractalPainting.c:956
static int mdTexData(unsigned int w, unsigned int h)
Definition: gl4dfFractalPainting.c:990
static void triangleEdge(GLubyte *parentData, GLubyte *levelData, ll_t **llmap, GLushort mapWidth, GLushort mapHeight, int x0, int y0, int w, int h, int current_level, int computing_level)
Definition: gl4dfFractalPainting.c:815
static void llMapFree(ll_t **llmap, GLushort mapWidth, GLushort mapHeight)
Definition: gl4dfFractalPainting.c:786
static void llInsert(ll_t **head, GLushort x, GLushort y)
Definition: gl4dfFractalPainting.c:764
static GLboolean _change_seed
Definition: gl4dfFractalPainting.c:35