Sharbat Gula converted

Started by Stefan, June 01, 2015, 05:55:05 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Stefan

Sharbat Gula converted to GLSL Hacker format.

Study the fragment shader before you confuse this demo with a photo.

Copy the code and save as Sharbat_Gula_gl2.xml

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>

<glsl_hacker>
   
  <window name="win3d01" title="MadShaders - Shadertoy/Sharbat Gula"
          width="1024" height="1024"
          gl_version_major="2" gl_version_minor="1" />
         
         
<gpu_program name="shadertoy_prog" >
    <raw_data_vs><![CDATA[     
void main()
{   
    gl_TexCoord[0] = gl_MultiTexCoord0;
  gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;       
}
  ]]></raw_data_vs>
 
    <raw_data_ps><![CDATA[     

// https://www.shadertoy.com/view/XslSRs

uniform vec3      iResolution;     // viewport resolution (in pixels)
uniform float     iGlobalTime;     // shader playback time (in seconds)
uniform vec4      iMouse;          // mouse pixel coords. xy: current (if MLB down), zw: click
//uniform sampler2D iChannel0;



//

// https://www.shadertoy.com/view/XslSRs
// By David Hoskins.

// Sharbat Gula. Iconic image from 1984.
// Afghan Girl is an award-winning photograph by journalist Steve McCurry.
// http://en.wikipedia.org/wiki/Afghan_Girl

// Genetic algorithm. Over 1.3M random generations with 64000 chosen iterations
// to home in on the original image.
// Overlapping transparencies of 256 triangles with moving dither.

// On Windows this will only work in the latest Chrome browser (36.0+).
// (Hopefully, anyway)

// Add noise to the triangles to make it a little clearer...
#define ADD_DITHER

// Fade in the dither for a nice effect. It may over stress your computer...
//#define FADE_IN_DITHER

vec3 col = vec3(0.0);
vec2 uv;
const vec2 INV_SCALE  = 1.0 / vec2(509.0, 509.0*450.0/800.0);
vec2 fcoord;

//========================================================================
#ifdef ADD_DITHER
#ifdef FADE_IN_DITHER
vec2 randValues = vec2(0.01, 0.005) * (1.0+smoothstep(3.0, 0.0, iGlobalTime*.5)*20.0);
#else
const vec2 randValues = vec2(0.01, 0.005);
#endif
vec2 Hash2( vec2 x )
{
    float n = dot(x,vec2(1.12313,113.94871)) + iGlobalTime;
    return fract(sin(n)*vec2(3758.5233,2578.1459));
}
#endif

//========================================================================
vec2 unpackCoord(float f)
{
    // Needs a 'modf', but sadly no...
    return vec2(mod(f, 512.0),floor(f / 512.0)) * INV_SCALE;
}

//========================================================================
vec2 unpackColour(float f)
{
    return vec2(mod (f, 256.0),floor(f / 256.0)) / 256.0;
}

//========================================================================
void Tri(float pA, float pB, float pC, float pCol1, float pCol2)
{
    vec2 pos = uv;
    vec2 a = unpackCoord(pA);
    vec2 b = unpackCoord(pB);
    vec2 c = unpackCoord(pC);
#ifdef ADD_DITHER
    pos += Hash2(fcoord.xy) * randValues.x - randValues.y;
#endif

    // Triangle test...
    vec2 as = pos-a;
    vec2 bs = pos-b;
    if  ( (b.x-a.x)*as.y-(b.y-a.y)*as.x > 0.0 &&
          (a.x-c.x)*as.y-(a.y-c.y)*as.x > 0.0 &&
          (c.x-b.x)*bs.y-(c.y-b.y)*bs.x > 0.0)
    {
        vec2 c1 = unpackColour(pCol1);
        vec2 c2 = unpackColour(pCol2);
        if (c2.y > .24-iGlobalTime*.025)
            col = mix (col, vec3(c1.x, c1.y, c2.x), c2.y);
    }
}

//========================================================================
void main()
{
    fcoord = gl_FragCoord;
    uv = gl_FragCoord.xy / iResolution.xy;
   
    // Packed data parameters:
    // Tri( X1/Y1, X2/Y2, X3/y3, RG, BA)
   
    Tri(23490., 94141.,23995., 49878., 12444.);
    Tri(76159., 29968.,31048., 64508., 15285.);
    Tri(87417., 64563.,10556., 6177., 12319.);
    Tri(52228., 28672.,-289., 13265., 7723.);
    Tri(20242., -206.,121180., 42712., 12693.);
    Tri(101054., 35554.,39155., 42192., 12656.);
    Tri(33., -194.,88278., 10921., 10801.);
    Tri(39628., 41723.,107893., 50936., 11349.);
    Tri(63293., 41787.,86907., 64761., 14838.);
    Tri(68248., 25395.,80775., 17556., 10042.);
    Tri(145317., 70073.,83919., 59583., 15281.);
    Tri(90276., 20319.,84365., 31188., 10039.);
    Tri(82813., 59254.,77192., 40898., 14731.);
    Tri(44579., 9424.,24769., 11946., 12101.);
    Tri(75328., 23723.,92304., 16128., 11808.);
    Tri(77644., 111575.,112088., 34770., 10628.);
    Tri(72823., 76953.,98438., 6509., 10252.);
    Tri(53687., 434.,53193., 65022., 15357.);
    Tri(42941., -1.,49609., 47459., 14240.);
    Tri(30837., 16948.,119., 18007., 8777.);
    Tri(94071., 92535.,35195., 60385., 14834.);
    Tri(80182., 139190.,144657., 16476., 9532.);
    Tri(15434., 102451.,37888., 2147., 14339.);
    Tri(46079., 97108.,76173., 2305., 11026.);
    Tri(146527., 88106.,146539., 954., 9219.);
    Tri(55226., 43978.,100802., 54266., 15269.);
    Tri(21312., 33473.,14143., 22945., 14481.);
    Tri(57616., 41221.,94607., 4354., 14851.);
    Tri(3626., -472.,-461., 24531., 10873.);
    Tri(73147., 95233.,80130., 42702., 3561.);
    Tri(61643., 53477.,64247., 46839., 11949.);
    Tri(30976., 37151.,90325., 47102., 15010.);
    Tri(73014., 78193.,81784., 63229., 15354.);
    Tri(15506., 29756.,13436., 16722., 14422.);
    Tri(100618., 98490.,88751., 30957., 14129.);
    Tri(78739., 91883.,82658., 44649., 11633.);
    Tri(119168., 142569.,130280., 16480., 9540.);
    Tri(137451., 136168.,137458., 37266., 12404.);
    Tri(37746., 71052.,17239., 63998., 15340.);
    Tri(16603., 34129.,36175., 51688., 9966.);
    Tri(87200., 132157.,31355., 16966., 15152.);
    Tri(119189., 83534.,119704., 27007., 9109.);
    Tri(18164., 16136.,129808., 63740., 11907.);
    Tri(53110., 79671.,35695., 41905., 15188.);
    Tri(40448., 92221.,64527., 25171., 13103.);
    Tri(106242., 80647.,58143., 63730., 15089.);
    Tri(59721., 63292.,15692., 61395., 14060.);
    Tri(95628., 37049.,81789., 60151., 8616.);
    Tri(22296., 9460.,2299., 52165., 10381.);
    Tri(37503., 68381.,106327., 2576., 15112.);
    Tri(119069., 84363.,137504., 30393., 13182.);
    Tri(25788., 20611.,-286., 33259., 14455.);
    Tri(71817., 24648.,37664., 1551., 14085.);
    Tri(19370., 17839.,16818., 41706., 10009.);
    Tri(115470., 77999.,65703., 24256., 9034.);
    Tri(88898., 17713.,22878., 58869., 15279.);
    Tri(103681., 2108.,3135., 32543., 9969.);
    Tri(86458., 46169.,76228., 3369., 11033.);
    Tri(131912., 76083.,104321., 52989., 15230.);
    Tri(48964., 126316.,42649., 31982., 7993.);
    Tri(127301., 97640.,130904., 48360., 9603.);
    Tri(95403., 23803.,106195., 18582., 12857.);
    Tri(124435., 145780.,124435., 34932., 10009.);
    Tri(84006., 16862.,18406., 3329., 8217.);
    Tri(7252., 74071.,73043., 65269., 14578.);
    Tri(127209., 126534.,126537., 29289., 8815.);
    Tri(119069., 24788.,27392., 61436., 5333.);
    Tri(42245., 22851.,48415., 54526., 14266.);
    Tri(132419., 143109.,27890., 56564., 7854.);
    Tri(42547., 33334.,18168., 13470., 9517.);
    Tri(96616., 118103.,95544., 64504., 15270.);
    Tri(113647., 114162.,62661., 32442., 14328.);
    Tri(32201., -87.,-49., 509., 11529.);
    Tri(69028., 53149.,30139., 1931., 10787.);
    Tri(23757., 121554.,37554., 47051., 4424.);
    Tri(86855., 88894.,18762., 65278., 15050.);
    Tri(141800., 140962.,140967., 56572., 9214.);
    Tri(82100., 69854.,100062., 63738., 2781.);
    Tri(82468., 49670.,77358., 64568., 15214.);
    Tri(67399., 84807.,52019., 47598., 14750.);
    Tri(66937., 22303.,21801., 62716., 9948.);
    Tri(39371., 84933.,-83., 28639., 13915.);
    Tri(75083., 98700.,73021., 9509., 14891.);
    Tri(146943., 146828.,53190., 50160., 9541.);
    Tri(45216., 53941.,74392., 28158., 4145.);
    Tri(125524., 75973.,115563., 256., 14592.);
    Tri(15702., 71565.,73530., 59646., 15291.);
    Tri(286., -196.,30570., 48850., 12729.);
    Tri(99825., 99312.,14000., 1546., 15114.);
    Tri(132027., 146851.,53153., 5775., 13070.);
    Tri(-264., -196.,91000., 58622., 14999.);
    Tri(107327., 130888.,88767., 35791., 8868.);
    Tri(2559., 41455.,131487., 45351., 10585.);
    Tri(41109., 18270.,46815., 3155., 14855.);
    Tri(34159., 79243.,21631., 41186., 12376.);
    Tri(81596., 81594.,115111., 35466., 14205.);
    Tri(8421., 1306.,49878., 16987., 14362.);
    Tri(51629., 33187.,72142., 16764., 15176.);
    Tri(15871., 73648.,-2., 54098., 14270.);
    Tri(109748., 49434.,114366., 546., 10761.);
    Tri(62957., 74212.,79328., 59306., 10171.);
    Tri(92671., 146943.,82904., 29606., 15165.);
    Tri(41119., 33444.,53239., 3357., 10499.);
    Tri(119125., 105681.,95483., 16232., 15160.);
    Tri(19758., 25905.,101063., 5198., 15117.);
    Tri(59947., 146432.,48128., 22123., 9544.);
    Tri(45083., 374.,9082., 1329., 15109.);
    Tri(-245., 318.,67961., 55805., 14997.);
    Tri(22888., 31515.,30845., 291., 12049.);
    Tri(62891., 10146.,53681., 40620., 13213.);
    Tri(101247., 65186.,63152., 2365., 15105.);
    Tri(146812., 82891.,146862., 37118., 15232.);
    Tri(39284., 60805.,38747., 42705., 12696.);
    Tri(35256., 61826.,41387., 57554., 13497.);
    Tri(86256., 83708.,92404., 64969., 15243.);
    Tri(83763., 54646.,117008., 43160., 13451.);
    Tri(33895., 40014.,38458., 20725., 15164.);
    Tri(17776., 16652.,10102., 5673., 14367.);
    Tri(131567., 42823.,95732., 10561., 10008.);
    Tri(45372., 66872.,81070., 33973., 12893.);
    Tri(146766., 146744.,92220., 13382., 7731.);
    Tri(71345., 12588.,105150., 29841., 13383.);
    Tri(87503., 53663.,12791., 2598., 14602.);
    Tri(36862., 95231.,83932., 14633., 10254.);
    Tri(131422., 68862.,62729., 22128., 8555.);
    Tri(-369., 134204.,0., 17559., 9511.);
    Tri(31048., 42813.,26346., 65268., 14521.);
    Tri(100135., 92555.,134468., 51965., 14241.);
    Tri(84154., 66290.,72966., 57844., 11713.);
    Tri(73357., 53125.,140622., 43254., 7812.);
    Tri(111703., 146433.,125446., 3883., 13847.);
    Tri(25869., 30290.,2370., 58297., 2973.);
    Tri(94127., 118191.,114088., 16409., 12049.);
    Tri(2369., 50047.,101683., 53245., 14236.);
    Tri(95495., 81667.,82199., 65277., 15358.);
    Tri(107971., -54.,511., 45312., 15188.);
    Tri(89038., 146860.,57789., 1422., 13843.);
    Tri(107055., 134204.,138795., 18765., 8725.);
    Tri(81838., 63945.,77254., 51454., 13736.);
    Tri(510., 92671.,-375., 30172., 7782.);
    Tri(12114., 82310.,32546., 49132., 12936.);
    Tri(29719., 14458.,26450., 12636., 14866.);
    Tri(53604., 65194.,49832., 6472., 9246.);
    Tri(105712., 14602.,110322., 37746., 9034.);
    Tri(119633., 103735.,37699., 59901., 14506.);
    Tri(88968., 121705.,112842., 64246., 3561.);
    Tri(146532., 146432.,68613., 14131., 8213.);
    Tri(-422., -361.,6245., 22954., 12387.);
    Tri(94989., 63171.,246., 50640., 8347.);
    Tri(91840., 85692.,79571., 49125., 12878.);
    Tri(89395., 48395.,23843., 1053., 15105.);
    Tri(70068., 18938.,121269., 63918., 4092.);
    Tri(85854., 77688.,87413., 65277., 15355.);
    Tri(1166., 10419.,20609., 37874., 7818.);
    Tri(52287., 44099.,40022., 31696., 12705.);
    Tri(128662., 77109.,130289., 262., 15110.);
    Tri(111592., 119142.,103597., 10319., 8464.);
    Tri(96882., 96882.,33647., 21095., 8961.);
    Tri(124861., 373.,-48., 471., 7681.);
    Tri(103639., 96653.,129773., 51454., 13179.);
    Tri(146707., 70228.,30852., 788., 15114.);
    Tri(-343., 48216.,6144., 14735., 10052.);
    Tri(-1., 35272.,-91., 65195., 9952.);
    Tri(142648., 134919.,33134., 49396., 10381.);
    Tri(76659., 88948.,88410., 65018., 15357.);
    Tri(41472., 18829.,55396., 777., 12804.);
    Tri(124740., 93018.,97630., 14926., 8016.);
    Tri(52224., -512.,66703., 2606., 14860.);
    Tri(91688., 77888.,122461., 114., 9245.);
    Tri(101164., 87329.,97149., 24216., 11319.);
    Tri(59325., 63432.,103342., 45054., 9352.);
    Tri(29929., 44845.,102209., 1046., 14081.);
    Tri(33039., 95506.,40130., 64507., 5118.);
    Tri(51584., 87436.,60764., 21663., 8825.);
    Tri(118798., 118798.,26316., 18408., 14412.);
    Tri(94361., 90949.,104701., 263., 15105.);
    Tri(124342., 78081.,116632., 34683., 13993.);
    Tri(79285., 47041.,81850., 65278., 15326.);
    Tri(88897., 70892.,81216., 19830., 13096.);
    Tri(44205., 21715.,43721., 11903., 14643.);
    Tri(86680., 2316.,93336., 10077., 11545.);
    Tri(137825., 53418.,53418., 58826., 11693.);
    Tri(107282., 58246.,126305., 56292., 7871.);
    Tri(122661., 13723.,127807., 4890., 7702.);
    Tri(75546., 75546.,26522., 24137., 12062.);
    Tri(133101., 110643.,133101., 64111., 10532.);
    Tri(133028., 94058.,23491., 2., 15106.);
    Tri(79211., 91503.,94563., 512., 15106.);
    Tri(17103., 108620.,108620., 40164., 10532.);
    Tri(54810., 136268.,135215., 8194., 13591.);
    Tri(143042., 102435.,102437., 18372., 9752.);
    Tri(90946., 99205.,136488., 55294., 13459.);
    Tri(50142., 8077.,9103., 56836., 8369.);
    Tri(33455., -235.,23842., 19033., 15152.);
    Tri(88502., 129965.,144260., 7780., 14882.);
    Tri(89964., 40822.,75658., 59646., 10668.);
    Tri(108953., 138107.,121717., 28279., 11889.);
    Tri(9267., 10254.,4138., 12449., 13359.);
    Tri(91402., 95546.,109243., 258., 15106.);
    Tri(55361., 55361.,35211., 31432., 13271.);
    Tri(56852., 17620.,109743., 2054., 14855.);
    Tri(24262., 108611.,35406., 7170., 15127.);
    Tri(-95., 112111.,115145., 1538., 12033.);
    Tri(146529., 146432.,43520., 65171., 12151.);
    Tri(146545., 127557.,18432., 60., 15106.);
    Tri(29544., 40308.,53016., 31647., 15189.);
    Tri(511., 146942.,115135., 62546., 3049.);
    Tri(45363., 58756.,72039., 44259., 15248.);
    Tri(98230., 138453.,126685., 4637., 7686.);
    Tri(13006., -325.,-285., 28597., 10851.);
    Tri(94404., -237.,11601., 47867., 10652.);
    Tri(89962., 77681.,86392., 65278., 15358.);
    Tri(62625., 62976.,62469., 32948., 8944.);
    Tri(38922., 54339.,63557., 3673., 14857.);
    Tri(80727., 70512.,87386., 27469., 15155.);
    Tri(23693., 8543.,11224., 4143., 10250.);
    Tri(146457., 45074.,115805., 7467., 10767.);
    Tri(41806., 74478.,61658., 40698., 8080.);
    Tri(37888., 10240.,8290., 14249., 15153.);
    Tri(146943., 146852.,12287., 64090., 15007.);
    Tri(108359., 146762.,124162., 15192., 13355.);
    Tri(46576., 70033.,70033., 19255., 11976.);
    Tri(138555., 130805.,88460., 51187., 11674.);
    Tri(139291., 12881.,10323., 21883., 10828.);
    Tri(36271., -66.,31689., 19., 14850.);
    Tri(109280., 127204.,103116., 13730., 8489.);
    Tri(44544., 22736.,142936., 519., 15106.);
    Tri(115502., 143616.,96429., 6206., 15134.);
    Tri(133104., 70206.,70206., 52538., 10089.);
    Tri(37226., 37738.,43868., 62440., 8620.);
    Tri(25122., 11840.,32243., 3379., 8225.);
    Tri(126201., 109292.,100124., 36859., 9552.);
    Tri(63087., 48567.,63087., 50261., 11530.);
    Tri(81956., 77361.,101427., 41255., 15187.);
    Tri(16642., 89814.,54478., 26509., 15178.);
    Tri(51938., 51984.,86817., 47588., 12697.);
    Tri(129269., 75582.,119670., 42480., 11601.);
    Tri(104326., 127327.,73608., 15479., 13869.);
    Tri(26010., 34884.,22593., 38., 10497.);
    Tri(39588., 145710.,130225., 6964., 14862.);
    Tri(42534., 10752.,33926., 5963., 13337.);
    Tri(92354., 65220.,58148., 37323., 11634.);
    Tri(129269., 107785.,118664., 1280., 2853.);
    Tri(137008., 143132.,131354., 21332., 12107.);
    Tri(18210., 24910.,24352., 48891., 15297.);
    Tri(26317., 17752.,25416., 41937., 8363.);
    Tri(146462., 19764.,146935., 23934., 7758.);
    Tri(95193., 115619.,74709., 12036., 8475.);
    Tri(-512., 540.,11264., 1160., 12052.);
    Tri(55086., 106369.,106369., 4138., 8744.);
    Tri(32338., 17990.,25285., 11117., 14395.);
    Tri(77066., 90383.,92918., 65277., 15358.);
    Tri(25937., 10552.,8518., 17729., 15157.);
    Tri(101779., 19098.,101265., 57338., 8110.);
    Tri(75672., 38802.,42387., 17456., 11142.);
    Tri(42306., 121548.,30887., 12367., 13859.);

    gl_FragColor = vec4(min(col*1.35, 1.0), 1.0 );
}


//

]]></raw_data_ps>

</gpu_program>


    <script name="init_scene" run_mode="INIT" >
        <raw_data><![CDATA[   

app_dir = gh_utils.get_scripting_libs_dir()         
dofile(app_dir .. "lua/Moon3D_v2.lua")

moon3d.init(2, 1)
moon3d.graphics.vsync(0)

bmfont = moon3d.font.create("trebuchet_20px.fnt", "data/")
bmfont_texture = moon3d.font.getTexture(bmfont)
moon3d.madshaders.setBmFontData(bmfont, bmfont_texture)

winW, winH = moon3d.window.getSize()

quad = moon3d.graphics.newQuad(winW, winH)
shadertoy_prog = moon3d.graphics.getGpuProgram("shadertoy_prog")

-- tex0 = moon3d.image.load2d("./data/tex16.png")

moon3d.madshaders.resetBenchmarkData()

        ]]></raw_data>
    </script>

 
    <script name="update_scene" run_mode="FRAME" >
        <raw_data><![CDATA[   

moon3d.startFrame(0, 0, 0, 1)

local global_time = moon3d.getTime()

moon3d.madshaders.updateBenchmarkData(global_time)

moon3d.camera.bindOrtho()

moon3d.graphics.bindGpuProgram(shadertoy_prog)
moon3d.madshaders.updateShadertoyCommonParams(shadertoy_prog, global_time)
--moon3d.madshaders.setShadertoyTexture(shadertoy_prog, tex0, 0)
moon3d.graphics.draw(quad)

moon3d.madshaders.displayBenchmarkInfoV2("Shadertoy/Sharbat Gula", global_time, 1, 1, 1, 1)

moon3d.endFrame()

        ]]></raw_data>
    </script>
   

    <script name="resize_scene" run_mode="SIZE" >
        <raw_data><![CDATA[   

moon3d.window.resize()
winW, winH = moon3d.window.getSize()
moon3d.graphics.resizeQuad(quad, winW, winH)

        ]]></raw_data>
    </script>
 
</glsl_hacker>



JeGX

Cool!

Thanks for your work Stefan!

I know where to find the demos for the next update of MadShaders  ;)

Stefan