Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 79eacfcf authored by TAVERNIER Vincent's avatar TAVERNIER Vincent
Browse files

Add samples for defense

parent cb765437
No related branches found
No related tags found
No related merge requests found
......@@ -210,7 +210,7 @@ if (GLCV_FULL_BUILD)
${SAMPLES_DIR}/infinite_zoom.ini
"-r${SAMPLES_DIR}/infinite_zoom-noartifact.xml"
${CONFIGS_DIR}/noise.fsh)
render_sample(bad_noise_zoom ${SAMPLES_DIR}/bad_noise_zoom.ini
render_sample(bad_noise_zoom ${SAMPLES_DIR}/bad_noise_zoom.ini
""
${CONFIGS_DIR}/np.fsh)
render_sample(tuning_noise_temporal
......@@ -222,6 +222,106 @@ if (GLCV_FULL_BUILD)
""
${SAMPLES_DIR}/tuning_noise_spatial.fsh)
# Defense samples
render_sample(3advect_nofix
${SAMPLES_DIR}/3advect.ini
"-DFIXMODE=0;-W256;--render.end=376"
${SAMPLES_DIR}/3advect.fsh)
render_sample(3advect_fix
${SAMPLES_DIR}/3advect.ini
"-DFIXMODE=1;-W256;--render.end=376"
${SAMPLES_DIR}/3advect.fsh)
render_sample(wn_raw_00
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=0;-W512;--render.end=600;-Dh=.125"
${SAMPLES_DIR}/wn_raw.fsh)
# Normal and contrast corrected, no rnd
render_sample(wn_raw_01
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=0;-W512;--render.end=600;-Dh=.125;-Dai_fun=ai_fun_exp"
${SAMPLES_DIR}/wn_raw.fsh)
render_sample(wn_raw_02
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=1;-W512;--render.end=600;-Dh=.125;-Dai_fun=ai_fun_exp;-Dphi=phi_linear"
${SAMPLES_DIR}/wn_raw.fsh)
render_sample(wn_raw_03
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=2;-W512;--render.end=600;-Dh=.125;-Dai_fun=ai_fun_exp;-Dphi=phi_linear"
${SAMPLES_DIR}/wn_raw.fsh)
render_sample(wn_raw_04
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=3;-W512;--render.end=600;-Dh=.125;-Dai_fun=ai_fun_exp;-Dphi=phi_linear"
${SAMPLES_DIR}/wn_raw.fsh)
# Contrast corrected samples with rnd
render_sample(wn_raw_05
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=0;-W512;--render.end=600;-Dh=.125;-Dai_fun=ai_fun_exp;-Dphi=phi_linear;-Dpos_fun=pos_fun_rnd"
${SAMPLES_DIR}/wn_raw.fsh)
render_sample(wn_raw_06
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=1;-W512;--render.end=600;-Dh=.125;-Dai_fun=ai_fun_exp;-Dphi=phi_linear;-Dpos_fun=pos_fun_rnd"
${SAMPLES_DIR}/wn_raw.fsh)
render_sample(wn_raw_07
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=2;-W512;--render.end=600;-Dh=.125;-Dai_fun=ai_fun_exp;-Dphi=phi_linear;-Dpos_fun=pos_fun_rnd"
${SAMPLES_DIR}/wn_raw.fsh)
render_sample(wn_raw_08
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=3;-W512;--render.end=600;-Dh=.125;-Dai_fun=ai_fun_exp;-Dphi=phi_linear;-Dpos_fun=pos_fun_rnd"
${SAMPLES_DIR}/wn_raw.fsh)
# Layer counts
render_sample(wn_raw_09
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=0;-W512;--render.end=600;-Dh=.6667;-Dai_fun=ai_fun_exp"
${SAMPLES_DIR}/wn_raw.fsh)
render_sample(wn_raw_10
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=0;-W512;--render.end=600;-Dh=.500;-Dai_fun=ai_fun_exp"
${SAMPLES_DIR}/wn_raw.fsh)
render_sample(wn_raw_11
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=0;-W512;--render.end=600;-Dh=.250;-Dai_fun=ai_fun_exp"
${SAMPLES_DIR}/wn_raw.fsh)
render_sample(wn_raw_12
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=0;-W512;--render.end=600;-Dh=.125;-Dai_fun=ai_fun_exp"
${SAMPLES_DIR}/wn_raw.fsh)
render_sample(wn_raw_13
${SAMPLES_DIR}/wn_raw.ini
"-DNORM_METHOD=0;-W512;--render.end=600;-Dh=.0833;-Dai_fun=ai_fun_exp"
${SAMPLES_DIR}/wn_raw.fsh)
render_sample(ccblending_fix_nosprite
${SAMPLES_DIR}/ccblending.ini
"-DFIXMODE=1;-DDRAWPATCHES=0;--render.end=600"
${SAMPLES_DIR}/ccblending.fsh)
render_sample(ccblending_nofix_nosprite
${SAMPLES_DIR}/ccblending.ini
"-DFIXMODE=0;-DDRAWPATCHES=0;--render.end=600"
${SAMPLES_DIR}/ccblending.fsh)
render_sample(ccblending_nofix_sprite
${SAMPLES_DIR}/ccblending.ini
"-DFIXMODE=0;-DDRAWPATCHES=1;--render.end=600"
${SAMPLES_DIR}/ccblending.fsh)
render_sample(ccblending_fix_sprite
${SAMPLES_DIR}/ccblending.ini
"-DFIXMODE=1;-DDRAWPATCHES=1;--render.end=600"
${SAMPLES_DIR}/ccblending.fsh)
add_custom_target(samples DEPENDS ${SAMPLE_OUTPUTS})
if (OLD_RENDER_DIRECTORY)
set(CMD "([ ! -e ${OLD_RENDER_DIRECTORY} ] && ln -fs ${RENDER_DIRECTORY} ${OLD_RENDER_DIRECTORY}) | true")
......@@ -439,6 +539,12 @@ if (GLCV_FULL_BUILD)
render_still_take_cv(optical_flow wn-exp-lin-08-opt png png ${SAMPLES_DIR}/wn_raw.ini 0 5 "-Dphi=phi_linear;-Dai_fun=ai_fun_exp;-Dpos_fun=pos_fun_lin;-Dh=.2500;-W512;--postprocess=../configs/pp_optical_flow.fsh" ${WN_DEPS})
render_still_take_cv(optical_flow wn-exp-rnd-08-opt png png ${SAMPLES_DIR}/wn_raw.ini 0 5 "-Dphi=phi_linear;-Dai_fun=ai_fun_exp;-Dpos_fun=pos_fun_rnd;-Dh=.2500;-W512;--postprocess=../configs/pp_optical_flow.fsh" ${WN_DEPS})
render_still(procmarble-step0 png png ${SAMPLES_DIR}/procmarble.ini 1 "-DTEXSTEP=0;-W512" ${SAMPLES_DIR}/procmarble.fsh)
render_still(procmarble-step1 png png ${SAMPLES_DIR}/procmarble.ini 1 "-DTEXSTEP=1;-W512" ${SAMPLES_DIR}/procmarble.fsh)
render_still(procmarble-step2 png png ${SAMPLES_DIR}/procmarble.ini 1 "-DTEXSTEP=2;-W512" ${SAMPLES_DIR}/procmarble.fsh)
render_still(procmarble-step3 png png ${SAMPLES_DIR}/procmarble.ini 1 "-DTEXSTEP=3;-W512" ${SAMPLES_DIR}/procmarble.fsh)
render_still(procmarble-step4 png png ${SAMPLES_DIR}/procmarble.ini 1 "-DTEXSTEP=4;-W512" ${SAMPLES_DIR}/procmarble.fsh)
add_custom_target(stills DEPENDS ${STILLS_OUTPUTS})
if (OLD_RENDER_DIRECTORY)
set(CMD "([ ! -e ${OLD_RENDER_DIRECTORY} ] && ln -fs ${RENDER_DIRECTORY} ${OLD_RENDER_DIRECTORY}) | true")
......
// cf https://hal.inria.fr/inria-00537472 ( also exist in Lagrangian form )
#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a))
void mainImage( out vec4 O, in vec2 U )
{
float t = mod(iGlobalTime,6.283);
vec2 uv = U / iResolution.xy - .5;
O-=O;
for (float i=0.; i<3.; i++) {
float ti = t+ 6.283/3.*i,
wi = (.5-.5*cos(ti))/1.5,
v = 3./(.01+length(uv));
vec2 uvi = uv*rot(.3*(-.5+fract(ti/6.283))*v);
//if (i>0.) break;// else wi=1.; // uncomment to show smearing / trick with 1 layer
#ifndef FIXMODE
if (uv.x < 0.)
O += texture(iChannel0, .5 + uvi ) * wi;
else
O[int(i)] += texture(iChannel1, .5 + uvi ).x * wi; // show each phase in colors
#else
#if FIXMODE==0
O += texture(iChannel0, .5 + uvi ); break;
#else
O += texture(iChannel0, .5 + uvi ) * wi;
#endif
#endif
}
}
\ No newline at end of file
[image]
shader = 3advect.fsh
[image.0]
type=noise
[image.1]
type=checker
// NB: trick published in https://hal.inria.fr/inria-00536064v2
// try textures random, checker, etc
#define T(U) texture(iChannel0,2.*U)*1.3 // *1.3 only for dark texture
#define mean texture(iChannel0,2.*U,10.)*1.3
// variants:
// #define mean vec4(65,54,46,1)/255. // mean for Britney video
// #define T(U) vec4(.5+.5*sin(120.*U.x)) // Gabor noise. mean = .5
// #define T(U) K(U) // simple blob. mean = .5
// #define mean .5
#define K(U) smoothstep(.2, .0, length(U)) // smooth kernel
#define rnd(i) fract(1e4*sin(i+vec2(0,73.17))) // texture
void mainImage( out vec4 O, vec2 U )
{
O-=O;
vec2 R = iResolution.xy, r=R/R.y;
//if (abs(U.x-R.x/2.)<2.) {O++; return;}
U /= R.y;
float s=0., s2=0., v;
for (int i=0; i<150; i++)
{
vec2 V = U-rnd(vec2(i))*r + .1*cos(vec2(i)+iDate.w+vec2(0,1.6)); // sprite position
v = K(V); s += v; s2 += v*v; // kernel and momentums
O += v*T(V);
#if DRAWPATCHES==1
if (i > 50 && mod(float(i),5.)==0.)
O *= 1.-vec4(abs(K(V)*100.-1.)<.5?1.:0.);
#endif
}
// normalization
#if FIXMODE==0
O /= s; // linear blend
#elif FIXMODE==1
O = mean + (O-s*mean)/sqrt(s2); // variance preserving blend
#endif
}
[image]
shader = ccblending.fsh
[image.0]
type = texture
source = textures/tex13.jpg
void mainImage(out vec4 O, in vec2 U)
float scale = 75.;
//------------------------------------------------------------------------
// Camera
//
// Move the camera. In this case it's using time and the mouse position
// to orbitate the camera around the origin of the world (0,0,0), where
// the yellow sphere is.
//------------------------------------------------------------------------
void doCamera( out vec3 camPos, out vec3 camTar, in float time, in float mouseX )
{
float an = 0.3*iGlobalTime + 10.0*mouseX;
camPos = vec3(3.5*sin(an),1.0,3.5*cos(an));
camTar = vec3(0.0,0.0,0.0);
}
//------------------------------------------------------------------------
// Background
//
// The background color. In this case it's just a black color.
//------------------------------------------------------------------------
vec3 doBackground( void )
{
return vec3( 0.0, 0.0, 0.0);
}
//------------------------------------------------------------------------
// Modelling
//
// Defines the shapes (a sphere in this case) through a distance field, in
// this case it's a sphere of radius 1.
//------------------------------------------------------------------------
float doModel( vec3 p )
{
return length(p) - 1.0;
}
//------------------------------------------------------------------------
// Material
//
// Defines the material (colors, shading, pattern, texturing) of the model
// at every point based on its position and normal. In this case, it simply
// returns a constant yellow color.
//------------------------------------------------------------------------
vec3 doMaterial( in vec3 pos, in vec3 nor )
{
return texelFetch(iChannel1, ivec2(511*(1. + sin(floor(scale*(length(pos.xy - .5) + .1*(sin(12.*pos.x))*texture(iChannel0, pos.xy).r))))/2., 0), 0).rgb/4.;
}
//------------------------------------------------------------------------
// Lighting
//------------------------------------------------------------------------
float calcSoftshadow( in vec3 ro, in vec3 rd );
vec3 doLighting( in vec3 pos, in vec3 nor, in vec3 rd, in float dis, in vec3 mal )
{
vec3 lin = vec3(0.0);
// key light
//-----------------------------
vec3 lig = normalize(vec3(1.0,0.7,0.9));
float dif = max(dot(nor,lig),0.0);
float sha = 0.0; if( dif>0.01 ) sha=calcSoftshadow( pos+0.01*nor, lig );
lin += dif*vec3(4.00,4.00,4.00)*sha;
// ambient light
//-----------------------------
lin += vec3(0.50,0.50,0.50);
// surface-light interacion
//-----------------------------
vec3 col = mal*lin;
// fog
//-----------------------------
col *= exp(-0.01*dis*dis);
return col;
}
float calcIntersection( in vec3 ro, in vec3 rd )
{
if (iMouse.x/iResolution.x > .5)
const float maxd = 20.0; // max trace distance
const float precis = 0.001; // precission of the intersection
float h = precis*2.0;
float t = 0.0;
float res = -1.0;
for( int i=0; i<90; i++ ) // max number of raymarching iterations is 90
{
O = vec4((1. + sin(floor(100.*(iMouse.y/iResolution.y))*(length(U/iResolution.xy - .5) + .1*texture(iChannel0, U/iResolution.xy).r))))/2.;
if( h<precis||t>maxd ) break;
h = doModel( ro+rd*t );
t += h;
}
else
if( t<maxd ) res = t;
return res;
}
vec3 calcNormal( in vec3 pos )
{
const float eps = 0.002; // precision of the normal computation
const vec3 v1 = vec3( 1.0,-1.0,-1.0);
const vec3 v2 = vec3(-1.0,-1.0, 1.0);
const vec3 v3 = vec3(-1.0, 1.0,-1.0);
const vec3 v4 = vec3( 1.0, 1.0, 1.0);
return normalize( v1*doModel( pos + v1*eps ) +
v2*doModel( pos + v2*eps ) +
v3*doModel( pos + v3*eps ) +
v4*doModel( pos + v4*eps ) );
}
float calcSoftshadow( in vec3 ro, in vec3 rd )
{
float res = 1.0;
float t = 0.0005; // selfintersection avoidance distance
float h = 1.0;
for( int i=0; i<40; i++ ) // 40 is the max numnber of raymarching steps
{
h = doModel(ro + rd*t);
res = min( res, 64.0*h/t ); // 64 is the hardness of the shadows
t += clamp( h, 0.02, 2.0 ); // limit the max and min stepping distances
}
return clamp(res,0.0,1.0);
}
mat3 calcLookAtMatrix( in vec3 ro, in vec3 ta, in float roll )
{
vec3 ww = normalize( ta - ro );
vec3 uu = normalize( cross(ww,vec3(sin(roll),cos(roll),0.0) ) );
vec3 vv = normalize( cross(uu,ww));
return mat3( uu, vv, ww );
}
void mainImage(out vec4 O, in vec2 U)
{
#if TEXSTEP==0
O = vec4((1. + sin(floor(scale*(length(U/iResolution.xy - .5))))))/2.;
#elif TEXSTEP==1
O = vec4((1. + sin(floor(scale*(length(U/iResolution.xy - .5) + .1*texture(iChannel0, U/iResolution.xy).r)))))/2.;
#elif TEXSTEP==2
O = vec4((1. + sin(floor(scale*(length(U/iResolution.xy - .5) + .1*(sin(12.*U.x/iResolution.x))*texture(iChannel0, U/iResolution.xy).r)))))/2.;
#elif TEXSTEP==3
O = texelFetch(iChannel1, ivec2(511*(1. + sin(floor(scale*(length(U/iResolution.xy - .5) + .1*(sin(12.*U.x/iResolution.x))*texture(iChannel0, U/iResolution.xy).r))))/2., 0), 0);
#elif TEXSTEP==4
vec2 p = (-iResolution.xy + 2.0*U.xy)/iResolution.y;
vec2 m = iMouse.xy/iResolution.xy;
//-----------------------------------------------------
// camera
//-----------------------------------------------------
// camera movement
vec3 ro, ta;
doCamera( ro, ta, iGlobalTime, m.x );
// camera matrix
mat3 camMat = calcLookAtMatrix( ro, ta, 0.0 ); // 0.0 is the camera roll
// create view ray
vec3 rd = normalize( camMat * vec3(p.xy,2.0) ); // 2.0 is the lens length
//-----------------------------------------------------
// render
//-----------------------------------------------------
vec3 col = doBackground();
// raymarch
float t = calcIntersection( ro, rd );
if( t>-0.5 )
{
O = texelFetch(iChannel1, ivec2(511*(1. + sin(floor(100.*(iMouse.y/iResolution.y))*(length(U/iResolution.xy - .5) + .1*texture(iChannel0, U/iResolution.xy).r)))/2., 0), 0);
// geometry
vec3 pos = ro + t*rd;
vec3 nor = calcNormal(pos);
// materials
vec3 mal = doMaterial( pos, nor );
col = doLighting( pos, nor, rd, t, mal );
}
//-----------------------------------------------------
// postprocessing
//-----------------------------------------------------
// gamma
col = pow( clamp(col,0.0,1.0), vec3(0.4545) );
O = vec4( col, 1.0 );
#endif
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment