Gass szűrő / 16 1 1 4 1 1 1 e w dd Y w Y Y '
Gass szűrő niform samplerd colormap; cons floa kernel[9] = floa[9] 1.0.0 1.0.0 4.0.0 1.0.0 1.0; o vec4 ocolor; void main{ ocolor = vec40.0; forin =-1; <1; ++ forin =-1; <1; ++ ocolor += eelfechcolormap ivecgl_fragcoord + ivec * kernel[+1++1*3] / 16.0; }
/ / / / ' N N i N N j j i w j Y i Y w w w / / ' / / N N i h N N i h i w i Y Y i w i Y
niform samplerd colormap; cons floa kernel[3] = floa[3] 1.0.0 1.0 ; o vec4 ocolor; void main{ ocolor = vec40.0; forin =-1; <1; ++ ocolor += eelfechcolormap ivecgl_fragcoord + ivec0 * kernel[+1] / 4.0; } niform samplerd colormap; cons floa kernel[3] = floa[3] 1.0.0 1.0 ; o vec4 ocolor; void main{ ocolor = vec40.0; forin =-1; <1; ++ ocolor += eelfechcolormap ivecgl_fragcoord + ivec0 * kernel[+1] / 4.0; }
niform samplerd colormap; niform vec eresize; in vec ftecoord; o vec4 ocolor; cons floa ONE_PER_SQRT_TWOPI = 0.3989; floa w1floa { rern ONE_PER_SQRT_TWOPI / sigma / sigma * ep-*/.0/sigma/sigma; } void main{ ocolor = vec40.0; forin i= -N/; i<n/; ++i{ floa d = i / eresize.; ocolor += erecolormap ftecoord vecd0.0 * w1d; } }
Fonosság szerini minavéel d w ' w d d d w d d d d d w 1 0 ' M i M i M d 1 1 0 ' 1 1
Szeparálhaó Gass szűrő niform samplerd colormap; in vec ecoord; cons floa offse[5] = floa[5]-1.8-0.54 0 0.54 1.8; void main{ forin =-; <; ++ ocolor += IeCoord + vecoffse[] 0.0 / 5.0; } niform samplerd colormap; in vec ecoord; cons floa offse[5] = floa[5]-1.8-0.54 0 0.54 1.8; void main{ forin =-; <; ++ ocolor += IeCoord + vec0.0 offse[] / 5.0; }
A renderelés célponja Összefogja a rajzolási állapooka Hasonló a eúra objekmhoz Képernő bfferek Framebffer objec Color bffer G_MA_COOR_ATTACHMENTS Deph bffer Sencil bffer
Gin framebffer; glgenframebffers1 &framebffer; glbindframebfferg_framebuffer framebffer; Gin* coloraachmens = new Gin[planes]; glgenteresplanes coloraachmens; forin i=0; i<planes; ++i{ // era bealliasok glframebfferteredg_framebuffer G_COOR_ATTACHMENT0 + i G_TETURE_D coloraachmens[i] 0; } Gin dephbffer; glgenrenderbffers1 &dephbffer; glbindbfferg_renderbuffer dephbffer; glrenderbffersorageg_renderbuffer G_DEPTH_COMPONENT4 widh heigh; glframebfferrenderbfferg_framebuffer G_DEPTH_ATTACHMENT G_RENDERBUFFER dephbffer; glbindframebfferg_framebuffer 0; Genm sas = glcheckframebffersasg_framebuffer;
Használhaó formámok Color aachmen G_RED G_RG G_RGB G_RGBA Deph aachmen G_DEPTH_COMPONENT G_DEPTH_STENCI Sencil aachmen G_STENCI_INDE G_DEPTH_STENCI
Framebffer kriérimok Minden aachmen komple Megfelelő ípsok a csalakozási ponokon Használhaó formám Nem nlla mére egalább eg képbffer van Implemenáció függő megköések
Beállíás a renderelés célponjává glbindframebfferg_framebuffer framebfferobjec; gldrawbffersplanes bffers; glviewpor0 0 widh heigh; Megköések Ha nem egforma méreűek a bfferek A mesze erülere rajzolnk Ha nem egforma a laerek száma A mesze laerekre rajzolnk A öbbi piel éréke haározalan lesz!
Több szín aachmen használaa o vec4 ocolor[3]; void mainvoid{ ocolor[0] = vec41.0 0.0 0.0 1.0; ocolor[1] = vec40.0 1.0 0.0 1.0; ocolor[] = vec40.0 0.0 1.0 1.0; } o vec4 ocolor[3]; void mainvoid{ ocolor = vec4[3] vec41.0 0.0 0.0 1.0 vec41.0 0.0 0.0 1.0 vec41.0 0.0 0.0 1.0; }
Ping-pongozás Framebffer* compebffer[]; in inpbffer = 0; // inicializálás compebffer[0] = new Framebfferwidh heigh 1; compebffer[1] = new Framebfferwidh heigh 1; // ieráció compebffer[inpbffer + 1 % ]->serendertarge; shader->enable; shader->binduniformtere inpmap compebffer[inpbffer]->gecolorbffer0 0; fllscreenqad->rendershader; shader->disable; compebffer[inpbffer + 1 % ]->disablerendertarge; inpbffer = inpbffer + 1 % ;
M D d d m m m
Newon Hooke m a m F d F d F D M
d m m d M D m d D d M m M D c c
c c v v v
v v c c c v v
niform samplerd inpmap; o vec4 ocolor; cons floa dela = 0.0001; cons floa dela = 0.01; cons floa sqrc = 0.0; void mainvoid{ vec4 daa = eelfechinpmap ivecgl_fragcoord 0; floa = daa.; floa v = daa.; floa d = eelfechinpmap ivecgl_fragcoord + ivec-1 00. + eelfechinpmap ivecgl_fragcoord + ivec 1 00. + eelfechinpmap ivecgl_fragcoord + ivec 0-10. + eelfechinpmap ivecgl_fragcoord + ivec 0 10. - 4 * ; = + v * dela; v = v + sqrc * d * dela; ocolor = vec4 v 0.0 0.0; }
Hiba d d f d f d Ieráció Hiba 0 0 d h *d *h...... m*d m*h h
Sabilizálás Visszamenő Eler Crank-Nickolson módszer Másodrendű Rnge-Ka Verle ineáris egenlerendszer c v v v
f d d f e m e f e c v c v v c v Midpoin közelíés
niform samplerd inpmap; o vec4 ocolor; cons floa dela = 0.0001; cons floa dela = 0.01; cons floa sqrc = 0.0; void mainvoid{ vec4 daa = eelfechinpmap ivecgl_fragcoord 0; floa = daa.; floa v = daa.; floa d = eelfechinpmap ivecgl_fragcoord + ivec-1 00. + eelfechinpmap ivecgl_fragcoord + ivec 1 00. + eelfechinpmap ivecgl_fragcoord + ivec 0-10. + eelfechinpmap ivecgl_fragcoord + ivec 0 10. - 4 * ; floa m = + v * dela /.0; floa vm = v + sqrc * d * dela /.0; ocolor = vec4 v m vm; }
niform samplerd inpmap; o vec4 ocolor; cons floa dela = 0.0001; cons floa dela = 0.01; cons floa sqrc = 0.0; void mainvoid{ vec4 daa = eelfechinpmap ivecgl_fragcoord 0; floa = daa.; floa v = daa.; floa m = daa.z; floa vm = daa.w; floa d = eelfechinpmap ivecgl_fragcoord + ivec-1 00.z + eelfechinpmap ivecgl_fragcoord + ivec 1 00.z + eelfechinpmap ivecgl_fragcoord + ivec 0-10.z + eelfechinpmap ivecgl_fragcoord + ivec 0 10.z - 4 * ; = + vm * dela; v = v + sqrc * d * dela; ocolor = vec4 v 0.0 0.0; }