Age Verification
This website contains age-restricted material including nudity and explicit content. By entering, you confirm being at least 18 years old or the age of majority in the jurisdiction you are accessing the website from.
I am 18+ or older - Enter
I am under 18 - Exit
Our parental controls page explains how you can easily block access to this site.

Discussions for Scenes for Version 1.2.X Fullscreen Mode here

  Forum / Alles über iStripper

Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
24. January 2022
FG133 needs Version140 error for Mat inverse function
My two PC's do not support version 140
so I needed to hard code a Mat3 inverse function

in the shader
Silver TilingsMod01.fsh

at line 136
change it from this

void getTriSubDiv(vec3 pos, inout vec3 p1, inout vec3 p2, inout vec3 p3)
{
mat3 m = mat3((p2-p1)*.5,(p3-p1)*.5,p1);
vec3 q = inverse(m)*pos;

to this long form

void getTriSubDiv(vec3 pos, inout vec3 p1, inout vec3 p2, inout vec3 p3)
{
mat3 m = mat3((p2-p1)*.5,(p3-p1)*.5,p1);
//mat3 inverse
float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2];
float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2];
float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2];

float b01 = a22 * a11 - a12 * a21;
float b11 = -a22 * a10 + a12 * a20;
float b21 = a21 * a10 - a11 * a20;

float det = a00 * b01 + a01 * b11 + a02 * b21;

mat3 im = mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),
b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),
b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det;
// end mat3 inverse
vec3 q = im*pos;

also on line 351 fix the vec4 to vec3 and vec 3 to vec2 conversion errors using swizzles

from this

// reflection of cubemap
c *= texture(iChannel1,R).xyz*1.5+.4;

to this

// reflection of cubemap
c *= (texture(iChannel1,R.xy)).xyz * 1.5 + .4;

EverthangForever
Mitglied seit in Oct 2009

2477 Beiträge
24. January 2022 (edited)
Only one gremlin out of five..yay, things are def looking up :-)
Thanks very much @WA. FG132-136.zip has been amended to include the
above FG133 shader adjustments. Zip is now updated on the server.

@ComteDracula re-télécharger / extraire est nécessaire:
https://scenes.virtuastripper.net/ET_FractalGarden132-136.zip
new zipsize = 145 Kb

btw, In the FG133 .scn file viz I used a suitably light colored 'swirl'
substrate texture in framebuffer to affect the final color of the
foreground 'Silver Tilings' Torus which was otherwise
rendering quite dark following the shader's final alpha transparency code
gl_FragColor.a = length(gl_FragColor.rgb);
Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
24. January 2022
I made a few changes, have a look
FG133WA


logo: Info/small_logoFractalGarden133.png
text: Info/infoFractalGarden087.txt
minVersion: 1.2.0.80

clip {
id: Right
deny: cage, top, accessories, pole
}

clip {
id: Left
deny: cage, top, table, accessories, pole
}

texture {
id: swirl
source: Textures/RedGold.png
}

framebuffer {
id: alt_bkgndA
source: swirl
//alter the color to affect the blend
color: 9.0, -9.0, -9.0
pos: 0, 0, 0
size: 1920, 1080
animate: 30, PingPong, linear, color, -18, 0, 0
animate: 20, PingPong, linear, color, 0, 0, 18
animate: 10, PingPong, linear, color, 0, 18, 0
}

////////////////////////////////////
camera {
type: 3D
angle: 45
pos: 0, -2, 1290

quad {
pos: 0, 0, 0
size: 1920, 1080
//shader: fragment,Shaders/clouds.fsh
shader: fragment,Shaders/PyThrrrown/Viscosity Clone Mod01.fsh
}

sprite {
source: alt_bkgndA
size: 1920, 1080
pos: 0, 0, 0
shader: fragment,Shaders/Flockaroo/Silver TilingsMod01.fsh
// use a blend to alter the look
//blend: SRC_COLOR,ONE_MINUS_SRC_COLOR
blend: SRC_COLOR,ONE_MINUS_SRC_ALPHA

}


// light { // Blue Spot Light
// pos: 500, 150, 2000
// ambient: 1.0, 1.0, 1.0
// color: -1.0, -1.0, 1.0
// animate: 20., PingPong, linear, pos, -600, 0, -4000
// }
// light { // Red Spot Light
// pos: -500, 150, 2000
// ambient: 1.0, 1.0, 1.0
// color: 1.0, -1.0, -1.0
// animate: 30., PingPong, linear, pos, 600, 0, -4000
// }
light { // full Spot Light
pos: 0, 150, 2000
ambient: 1.0, 1.0, 1.0
color: 1.0, 1.0, 1.0
}


// Left model
clipSprite {
pos: -620, 533, 0
source: Left
standingHeight: 880
sittingheight: 540
resolution: 100
scale: -1., 1., 1.
opacity: 1.0
Material: True
}
//Model name
clipNameSprite {
//pos: -740, 480, -10
pos: -590, 380, 300
hotspot: 0.5, 1
scale: 0.45, 0.36
source: Left
color: 0.98, 0.90, 0.95 //Changed default white color

}

//Right model
clipSprite {
pos: 620, 533, 0
source: Right
standingHeight: 880
sittingheight: 540
resolution: 100
scale: -1., 1., 1.
opacity: 1.0
Material: True
}
//Model name
clipNameSprite {
pos: 590, 380, 300
hotspot: 0.5, 1
scale: 0.45, 0.36
source: Right
color: 0.98, 0.90, 0.95 //Changed default white color

}
}
Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
24. January 2022 (edited)
I don't think Blends have been talked about other then
blend: true
and
blend: false

blend takes the format of the Source Item that is being added to the framebuffer
and the destination of what is already in the framebuffer

so you have
blend: Source option, Destination Option

with many choices for the Source and Destination blend types.
these are a few, not all of them.

Source options
ZERO
ONE
DST_COLOR
ONE_MINUS_DST_COLOR
SRC_ALPHA
ONE_MINUS_SRC_ALPHA
DST_ALPHA
ONE_MINUS_DST_ALPHA
SRC_ALPHA_SATURATE

Destination options
ZERO
ONE
SRC_COLOR
ONE_MINUS_SRC_COLOR
SRC_ALPHA
ONE_MINUS_SRC_ALPHA
DST_ALPHA
ONE_MINUS_DST_ALPHA
Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
24. January 2022 (edited)
and here I made some edits to the shader so I could change variables using #defines
I called it
Silver TilingsMod02.fsh
and just chaned the .scn file to use it instead

I can get 6 subdivision, before my GPU Limit is Reached.
but the 6th subdivision is very small.

using my sample sizes here
I'm only using 5 subdivisions, and placed the 5th one on the outside

it's fun to experiment.


// // License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
// Silver Tilings fragment shader
// created by florian berger (flockaroo) - 2017
// Original obtained from ShaderToy.com
// https://www.shadertoy.com/view/XsXfz2 and Adapted, trivialy, for VGHD

uniform float u_Elapsed; // The elapsed time in seconds
uniform vec2 u_WindowSize; // Window dimensions in pixels

// Use defines here rather than edit the body of the code.
#define iTime u_Elapsed* 0.333
#define iGlobalTime u_Elapsed
#define iResolution u_WindowSize
#define iMouse vec4(0.0,0.0, 0.0,0.0)
// speed of rotation and angle change normal is .5
#define phispeed .1
#define thspeed .1
// each subdivision has a radius the maximum radius is 3.45
// 6 suddivisons is about the max you can do.
// if the sizeX is greater than Zero, then that subdivison will be added
// to Hide a subdivison make it very small < .001
// the spheresize controls the size of the center sphere
#define spheresize .735
#define size1 .890 // 1st subdivision size must be greater than 0
#define size2 .840 // next subdivision size set to zero to not run this subdivision
#define size3 .790 // " "
#define size4 .740 // " "
#define size5 .925 // " "
#define size6 0.0 // This is the last subdivsion
#define maxsize 3.50 // just to show the max size, larger than this is outside the view of the camera

uniform sampler2D iChannel0;
uniform sampler2D iChannel1;
uniform sampler2D iChannel2;
#ifdef GL_ES
precision mediump float;
#endif

vec4 texture2D_Fract(sampler2D sampler,vec2 P) {return texture2D(sampler,fract(P));}
vec4 texture2D_Fract(sampler2D sampler,vec2 P, float Bias) {return texture2D(sampler,fract(P),Bias);}




// tried some non periodic tilings on a sphere, startig from an icosahedron
// similar to truchet pattern only on a trigonal grid

// golden ratio - used for icosahedron
#define G (.5+sqrt(5./4.))
#define PI2 6.28318531


#define XCHGV3(a,b) { vec3 d=a; a=b; b=d; }

void sortXYZ(inout vec3 p1, inout vec3 p2, inout vec3 p3)
{
#define W(p) (p.x+p.y*.01+p.z*.0001)
if(W(p3)>W(p2)) XCHGV3(p3,p2);
if(W(p2)>W(p1)) XCHGV3(p2,p1);
if(W(p3)>W(p2)) XCHGV3(p3,p2);
if(W(p2)>W(p1)) XCHGV3(p2,p1);
}

// get closest icosahedron triangle
void getIcosaTriOld(vec3 pos, out vec3 p1, out vec3 p2, out vec3 p3)
{
float dot1 = -1000.0;
float dot2 = -1000.0;
float dot3 = -1000.0;
for(int s1=0;s1<2;s1++)
{
for(int s2=0;s2<2;s2++)
{
for(int perm=0;perm<3;perm++)
{
vec3 p0 = normalize(vec3(G,1,0))*vec3(s1*2-1,s2*2-1,0);
if (perm>1) p0 = p0.yzx;
else if(perm>0) p0 = p0.zxy;
float dot0 = dot(pos,p0);
if(dot0>dot1){
dot3=dot2; p3=p2;
dot2=dot1; p2=p1;
dot1=dot0; p1=p0;
}
else if(dot0>dot2){
dot3=dot2; p3=p2;
dot2=dot0; p2=p0;
}
else if(dot0>dot3){
dot3=dot0; p3=p0;
}
}
}
}
}






void getIcosaTri(vec3 pos, out vec3 p1, out vec3 p2, out vec3 p3)
{
mat2 rot=mat2(0.809016994374947, 0.587785252292473, -0.587785252292473, 0.809016994374947);

float ph = atan(pos.y,pos.x); ph=(ph<0.)?PI2+ph:ph;

float dang=PI2/5.;
float seg=ph/dang;
float fseg=floor(seg);

// 3 topmost points of segment + lower point of seg (p4t)
vec3 p1t=vec3(0,0,1.);
vec3 p2t=vec3(cos(fseg*dang-vec2(0,PI2/4.))*.894427190999916,.447213595499958);
vec3 p4t=vec3(rot*p2t.xy,-p2t.z);
vec3 p3t=vec3(rot*p4t.xy, p2t.z);

if (dot(pos,cross(p2t,p4t))<0. || dot(pos,cross(p4t,p3t))<0.) {
// xchg p2 and p3 (because bottom is mirrored in z)
p1t=vec3(0,0,-1.);
p3t=vec3((seg-fseg<.5)?p2t.xy*rot:rot*p2t.xy,-p2t.z);
p4t=vec3(rot*p3t.xy,-p3t.z);
p2t=vec3(rot*p4t.xy, p3t.z);
}

// mix top or below
bool top=(dot(pos,cross(p2t,p3t))>0.);
p1=top?p1t:p4t;
p2=top?p2t:p3t;
p3=top?p3t:p2t;
}


// check if pos hits triangle
bool thruTriangle(vec3 pos, vec3 v1, vec3 v2, vec3 v3)
{
vec3 n = cross(v2-v1,v3-v1);
// calc where pos hits triangle plane
pos = pos*dot(v1,n)/dot(pos,n);
v1-=pos; v2-=pos; v3-=pos;
vec3 c1=cross(v1,v2);
vec3 c2=cross(v2,v3);
vec3 c3=cross(v3,v1);
// check if the cross products of all the pos-edge-vectors show into the same direction
return dot(c1,c2)>0. && dot(c2,c3)>0. && dot(c3,c1)>0. ;
}

// subdivide 1 triangle into 4 triangles and give back closest triangle
void getTriSubDivOld(vec3 pos, inout vec3 p1, inout vec3 p2, inout vec3 p3)
{
vec3 p4 = normalize(p1+p2);
vec3 p5 = normalize(p2+p3);
vec3 p6 = normalize(p3+p1);

if (thruTriangle(pos,p1,p4,p6)) { p1=p1; p2=p4; p3=p6; }
else if(thruTriangle(pos,p6,p5,p3)) { p1=p6; p2=p5; p3=p3; }
else if(thruTriangle(pos,p6,p4,p5)) { p1=p6; p2=p4; p3=p5; }
else if(thruTriangle(pos,p4,p2,p5)) { p1=p4; p2=p2; p3=p5; }
}

void getTriSubDiv(vec3 pos, inout vec3 p1, inout vec3 p2, inout vec3 p3)
{
mat3 m = mat3((p2-p1)*.5,(p3-p1)*.5,p1);
//mat3 inverse
float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2];
float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2];
float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2];

float b01 = a22 * a11 - a12 * a21;
float b11 = -a22 * a10 + a12 * a20;
float b21 = a21 * a10 - a11 * a20;

float det = a00 * b01 + a01 * b11 + a02 * b21;

mat3 im = mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),
b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),
b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det;
// end mat3 inverse
vec3 q = im*pos;
q/=q.z;
vec3 qf=floor(q);
float f=step(1.,q.x-qf.x+q.y-qf.y);
p1 = m*vec3( qf.xy+f, 1 );
p2 = m*vec3( qf.xy+vec2(1.-f,f), 1 );
p3 = m*vec3( qf.xy+vec2(f,1.-f), 1 );
p1=normalize(p1);
p2=normalize(p2);
p3=normalize(p3);
}


// get some 3d rand values by multiplying 2d rand in xy, yz, zx plane
vec4 getRand(vec3 pos)
{
vec4 r = vec4(1.0);
r*=texture(iChannel2,pos.xy)*2.-1.;
r*=texture(iChannel2,pos.xz)*2.-1.;
r*=texture(iChannel2,pos.zy)*2.-1.;
return r;
}

// distancefield of torus around arbitrary axis z
// similar to http://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm
float distTorus(vec3 pos, float r1, float r2, vec3 z)
{
float pz = dot(pos,normalize(z));
return length(vec2(length(pos-z*pz)-r1,pz))-r2;
}

float getRand01Sph(vec3 pos)
{
return texture(iChannel0,pos.xy*123.+pos.z).x;
}

float distSphere(vec3 pos, float r)
{
return length(pos)-r;
}

float calcAngle(vec3 v1, vec3 v2)
{
return acos(dot(v1,v2)/length(v1)/length(v2));
}

// distance to 2 torus segments in a triangle
// each torus segment spans from the middle of one side to the middle of another side
float distTruchet(vec3 pos, vec3 p1, vec3 p2, vec3 p3)
{
float d = 10000.0;
float rnd=getRand01Sph(p1+p2+p3);
// random rotation of torus-start-edges
if (rnd>.75) { vec3 d=p1; p1=p2; p2=d; }
else if (rnd>.50) { vec3 d=p1; p1=p3; p3=d; }
else if (rnd>.25) { vec3 d=p2; p2=p3; p3=d; }

float r,r1,r2,fact,ang,fullAng;
vec3 n = normalize(cross(p2-p1,p3-p1));
// where pos hits triangle
vec3 pos2 = ((pos-p1)-dot(pos-p1,n)*n)+p1;

// torus segments:
// actually i have to fade from one torus into another
// because not all triangles are equilateral

// segment1
r1 = .5*length(p2-p1);
r2 = .5*length(p3-p1);
ang = calcAngle(pos2-p1,p2-p1);
fullAng = calcAngle(p3-p1,p2-p1);
fact = ang/fullAng;
r=mix(r1,r2,fact);
d=min(d,distTorus(pos-p1*sqrt(1.0-r*r),r,.1*r,p1));
// segment2
r1 = .5*length(p3-p2);
r2 = .5*length(p1-p2);
ang = calcAngle(pos2-p2,p3-p2);
fullAng = calcAngle(p1-p2,p3-p2);
fact = ang/fullAng;
r=mix(r1,r2,fact);
d=min(d,distTorus(pos-p2*sqrt(1.0-r*r),r,.1*r,p2));

return d;
}

// final distance funtion
float dist(vec3 pos)
{
pos+=.00015*getRand(pos*1.3).xyz*4.;
pos+=.00006*getRand(pos*3.).xyz*4.;
pos+=.00040*getRand(pos*.5).xyz*4.;
vec3 p1,p2,p3;
float d = 10000.;

// sphere in the middle
d=min(d,distSphere(pos,spheresize));


// start with an icosahedron subdivided once
float sc = 1.;
getIcosaTri(pos, p1, p2, p3);
getTriSubDiv(pos, p1, p2, p3);
// always sort by X, then Y, then Z - to get a unique order of the edges
sortXYZ(p1,p2,p3);
sc = 1./size1;
d=min(d,distTruchet(pos*sc, p1,p2,p3)/sc);


if ( size2 >0.){
// subdivide again for another detail
getTriSubDiv(pos,p1,p2,p3);
sortXYZ(p1,p2,p3);
sc = 1./size2;
d=min(d,distTruchet(pos*sc, p1,p2,p3)/sc);
}

if ( size3 >0.){
// subdivide again for another detail
getTriSubDiv(pos,p1,p2,p3);
sortXYZ(p1,p2,p3);
sc = 1./size3;
d=min(d,distTruchet(pos*sc, p1,p2,p3)/sc);
}

if ( size4 >0.){
// subdivide again for another detail
getTriSubDiv(pos,p1,p2,p3);
sortXYZ(p1,p2,p3);
sc = 1./size4;
d=min(d,distTruchet(pos*sc, p1,p2,p3)/sc);
}

if ( size5 >0.){
// subdivide again for another detail
getTriSubDiv(pos,p1,p2,p3);
sortXYZ(p1,p2,p3);
sc = 1./size5;
d=min(d,distTruchet(pos*sc, p1,p2,p3)/sc);
}

if ( size6 >0.){
// subdivide again for another detail
getTriSubDiv(pos,p1,p2,p3);
sortXYZ(p1,p2,p3);
sc = 1./size6; // size is outside of camera limit
d=min(d,distTruchet(pos*sc, p1,p2,p3)/sc);
}


return d;
}

vec3 getGrad(vec3 pos, float eps)
{
vec2 d=vec2(eps,0);
float d0=dist(pos);
return vec3(dist(pos+d.xyy)-d0,
dist(pos+d.yxy)-d0,
dist(pos+d.yyx)-d0)/eps;

}

// march it...
vec4 march(inout vec3 pos, vec3 dir)
{
// cull the sphere
if(length(pos-dir*dot(dir,pos))>1.05)
return vec4(0,0,0,1);

float eps=0.001;
float bg=1.0;
for(int cnt=0;cnt<32;cnt++)
{
float d = dist(pos);
pos+=d*dir;
if(d<eps) { bg=0.0; break; }
}
vec3 n = getGrad(pos,.001);
return vec4(n,bg); // .w=1 => background
}

mat3 rotX(float ang)
{
float c=cos(ang), s=sin(ang);
return mat3(1,0,0, 0,c,s, 0,-s,c);
}

mat3 rotZ(float ang)
{
float c=cos(ang), s=sin(ang);
return mat3(c,s,0, -s,c,0, 0,0,1);
}

//void mainImage( out vec4 fragColor, in vec2 fragCoord )
void main(void)
{
// screen coord -1..1
vec2 sc = (gl_FragCoord.xy/iResolution.xy)*2.-1.;
// viewer position
vec3 pos = vec3(0,-3.5,0);
// pixel view direction
vec3 dir = normalize(2.*normalize(-pos)+vec3(sc.x,0,sc.y*iResolution.y/iResolution.x));
// rotate view around x,z
float phi = iMouse.x/iResolution.x*7.;
float th = iMouse.y/iResolution.y*7.;
if (iMouse.x==0.) { phi=iTime*phispeed; th=.27*thspeed*iTime; }
mat3 rx = rotX(th);
mat3 rz = rotZ(phi);
pos = rz*(rx*pos);
dir = rz*(rx*dir);

// march it...
vec4 n=march(pos,dir);
float bg=n.w;

// calc some ambient occlusion
float ao=1.;
#if 0
// calc simple ao by stepping along radius
ao*=dist(pos*1.02)/.02;
ao*=dist(pos*1.05)/.05;
ao*=dist(pos*1.1)/.1;
#else
// calc ao by stepping along normal
ao*=dist(pos+n.xyz*.02)/.02;
ao*=dist(pos+n.xyz*.05)/.05;
ao*=dist(pos+n.xyz*.10)/.10;
#endif
// adjust contrast of ao
ao=pow(ao,.4);

// reflection dir
vec3 R = pos-2.0*dot(pos,n.xyz)*n.xyz;
R = -((R*rz)*rx).yzx;

vec3 c = vec3(1);
// simply add some parts of the normal to the color
// gives impression of 3 lights from different dir with different color temperature
c += n.xyz*.1+.1;

// reflection of cubemap
c *= (texture(iChannel1,R.xy)).xyz * 1.5 + .4;

// add some depth darkening
c*=clamp(-dot(dir,pos)*.7+.7, .2, 1.);

// apply ambient occlusion
c*=ao;

// apply background
//if(bg>=.5) c=vec3(.5,.6,.75)-.17;
if(bg>=.5) c=vec3(.0,.0,.0)-.0;

// vignetting
float vign = (1.1-.3*length(sc.xy));

gl_FragColor = vec4(c*vign,1);
gl_FragColor.a = length(gl_FragColor.rgb);
}

Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
24. January 2022
turned out to be 12 minutes long
but here is the video of my scene experimentation using the above changes
https://virtuastripper.net/video/Scene-experimentation-001.mp4

the shaders I made changes to
https://virtuastripper.net/Shaders/

the Texture
https://virtuastripper.net/Textures/

and the scene-mods I play around with
https://virtuastripper.net/Scene-Mods/
ComteDracula
Mitglied seit in Aug 2017

1295 Beiträge
24. January 2022
Thanks @EverthangForever. 😊

Merci @EverthangForever. 😊
EverthangForever
Mitglied seit in Oct 2009

2477 Beiträge
24. January 2022 (edited)
@ComteDracula bonjour. Répéterre- télécharger / extraire est nécessaire:
https://scenes.virtuastripper.net/ET_FractalGarden132-136.zip
new zipsize = 153 Kb

Thank you @WA for making the FG133WA scene compatible with rigs using
less than version 140 of GLSL. by providing a new hard coded Mat3 inverse function
readable by all.
.
thanks also for showing us how to apply animation color changes at the .scn level
then in the shader SilverTilingsMod02.fsh , allowing setting of multiple layers of Torus
subdivisions of varying sizes and speeds using defines. This has now become a remarkably
tweekable shader.

added your two scene mods FG133WA.scn and FG133WA01.scn to the last zip to illustrate the above.
The only difference I have made apart from incl. the hard coded Mat3 inverse function in all,
is to re-set line 19 of SilverTilingsMod01A.fsh and SilverTilingsMod01B.fsh to high definition.

#ifdef GL_ES
precision highp float;
#endif
ComteDracula
Mitglied seit in Aug 2017

1295 Beiträge
24. January 2022
Thank you very much @EverthangForever and @Wyldanimal. The scenes added by @Wylanimal, are magical in terms of colors.

I don't know if these 3 scenes (FG133, Fg133WA & FG133WA01) require more in terms of graphics, but I notice that there are some blows, in the movements of the girls.

I tried the CPU and GPU changes in the program settings, but it doesn't really change.


Merci beaucoup @EverthangForever et @Wyldanimal. Les scènes ajoutées par @Wylanimal, sont magifiques au niiveau des couleurs.

Je ne sais pas si ces 3 scènes (FG133, Fg133WA & FG133WA01) demande plus au niveau graphique, mais je remarque qu'il y a des à coups, dans les mouvements des filles .

J'ai essayé les changements au niveau du CPU et du GPU dans les réglages du programme, mais ça ne change pas vraiment.
EverthangForever
Mitglied seit in Oct 2009

2477 Beiträge
25. January 2022 (edited)
@ComteDracula merci pour vos précieux commentaires comme toujours.
j'ai aussi le mouvement de bégaiement des modèles avec
Scène de nuanceur de subdivision de @WyldAnimal dans FG133WA01
cependant je n'ai pas le même problème avec FG133WA qui utilise l'original
nuanceur de fond coloré. c'est-à-dire : le premier shader qu'il a posté.

Je vais mener quelques expériences pour voir si le bégaiement peut être réduit.


@ComteDracula thank you for your valuable feedback as always.
I also have the stuttering movement of the models with
subdivisions cage Shader Scene of @WyldAnimal in FG133WA01
however I do not have the same problem with FG133WA which uses the original
colored background scene using the first shader he posted.

I will conduct some experiments to see if stuttering can be reduced.
Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
25. January 2022 (edited)
The shader is Very GPU / CPU intensive
2-3 levels of Subdivisions will push most non-Gaming systems to the limits
at 5 or 6 subdivisions, even a good gaming system is at it's limit.
Only a high end Gaming system will not ***** the stuttering.

On Shadertoy, this Shader has gone through 3 different optimizations
so I think it is about as optimized out.

Of course the long code inverse matrix function takes a bit more than the built in Inverse function.
But neither of my systems supported that.


Le shader est très intensif pour le GPU et le CPU.
2 ou 3 niveaux de subdivisions poussent la plupart des systèmes de jeu à leurs limites.
à 5 ou 6 subdivisions, même un bon système de jeu est à sa limite.
Seul un système de jeu haut de gamme ne souffrira pas du bégaiement.

Sur Shadertoy, ce shader est passé par 3 optimisations différentes.
donc je pense qu'il est à peu près optimisé.

Bien sûr, le code long de la fonction de matrice inverse prend un peu plus que la fonction inverse intégrée.
Mais aucun de mes systèmes ne le supporte.

Traduit avec www.DeepL.com/Translator (version gratuite)
ComteDracula
Mitglied seit in Aug 2017

1295 Beiträge
25. January 2022
@EverthangForever,

You are right, the problem is much less obvious with FG133WA. It is more in the FG133WA01, that the problem is most visible.

Thank you both for confirming that I am not the only one with this problem.

I have come to wonder if I should change my graphics card, which I find too limited, but not being a specialist in this field, I don't know which card to choose.


@EverthangForever,

Vous avez raison, le problème est beaucoup moins évident avec FG133WA. C'est plus dans le FG133WA01, que le problème est le plus visible.

Merci à vous deux de me confirmer que je ne suis pas le seul à avoir ce problème.

J'en suis venu à me demander si je ne devrais pas changer de carte graphique, que je trouve trop limite, mais n'étant pas spécialiste dans ce domaine, je ne sais quelle carte choisir.
EverthangForever
Mitglied seit in Oct 2009

2477 Beiträge
25. January 2022
@ComteDracula l'état de mon système, j'ai copié à partir des rapports vghd.log en tant que

NVIDIA GeForce GT 730/PCIe/SSE2]
OPENGL GL_VERSION: 4.6.0 NVIDIA 472.08]
OPENGL GL_SHADING_LANGUAGE_VERSION: 4.60 NVIDIA]
OPENGL version: "4.6"]

Je suggère de garder votre carte graphique actuelle en ce moment.
Je dois encore télécharger FG137 - FG160 et il est bon d'avoir votre
des informations précieuses sur les shaders qui compilent jusqu'à ce que ce téléchargement soit terminé.

Cela donne à un large éventail d'utilisateurs d'ordinateurs nos meilleures connaissances en matière de
comment nous pouvons perfectionner le code plein écran dans openGL
--
I suggest keep your current graphics card at this moment.
I still have to upload FG137 - FG160 and it is good to have your
valuable input about what shaders are compiling until that upload is complete.

This gives a wide range of computer users our best knowledge in
how we can perfect the fullscreen code in openGL
Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
25. January 2022
I noticed an overlooked bug in FG124

the texture for the stage has the wrong path.
causes the Clipname to be used instead.

texture {
id: ppcstage
source: Textures/PPstageMini.png
}

It should be this

texture {
id: ppcstage
source: ETImages/Plaftexrot01/PPstageMini.png
}
Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
25. January 2022 (edited)
In the VGHD.log file, when O hover over a scene to create the mini preview
this is created in the log file

2022-01-25T07:42:41 fullscreen: [Scene::dumpOpenGL] WARNING[FullScreenPreview
OPENGL GL_VENDOR: NVIDIA Corporation]
OPENGL GL_RENDERER: GeForce GTX 980/PCIe/SSE2]
OPENGL GL_VERSION: 4.6.0 NVIDIA 456.71]
OPENGL GL_SHADING_LANGUAGE_VERSION: 4.60 NVIDIA]
OPENGL version: "4.6"]

but the error reported from the orig FG133 scene Shader is this
2022-01-25T07:56:14[] WARNING[QOpenGLShader:
:compile(Fragment): 0(142) : error C7532:
global function inverse requires "#version 140" or later

which means QT is evoking a version of OpenGL lower than version 140
and in that version the Inverse function does not exist.
Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
25. January 2022 (edited)
I'm glad we continued the discussion..

I discovered that the shaders are missing the set up headers
which configure GLSL to run using a specific Version of GLSL

by default, my iStripper is using the following default header,
it is added the beginning of the shader.


#version 130
#ifdef GL_KHR_blend_equation_advanced
#extension GL_ARB_fragment_coord_conventions : enable
#extension GL_KHR_blend_equation_advanced : enable
#endif
#define lowp
#define mediump
#define highp

here is a list of what #Version should be used based on which GLSL you want to be used.


GLSL Version Shader Preprocessor
1.10.59 #version 110
1.20.80 #version 120
1.30.10 #version 130
1.40.80 #version 140
1.50.11 #version 150
3.30.06 #version 330
4.00.09 #version 400
4.10.06 #version 410
4.20.11 #version 420
4.30.08 #version 430
4.40.09 #version 440
4.50.07 #version 450
4.60.05 #version 460

I also discovered that in Scene files
we use
minVersion: 1.2.0.80
and that is what causes the default header to be written




so
minVersion: 1.2.0.80

writes a default header with
#version 130
in it

to override the default header, the shader should include
one of it's own.

This Header fixes the original shader.

#version 140
#ifdef GL_KHR_blend_equation_advanced
#extension GL_ARB_fragment_coord_conventions : enable
#extension GL_KHR_blend_equation_advanced : enable
#extension GL_ARB_gpu_shader5 : enable
#endif
#define highp

plus this correction on line 360


// reflection of cubemap
c *= (texture(iChannel1,R.xy)).xyz * 1.5 + .4;
EverthangForever
Mitglied seit in Oct 2009

2477 Beiträge
25. January 2022
So let me be clear now..
by our convention of heading up our .scn files with 'minVersion: 1.2.0.80'
we should really be saying 'minVersion: 1.4.0.80' ?
and/or putting the following in our shader files ?
#version 140
#ifdef GL_KHR_blend_equation_advanced
#extension GL_ARB_fragment_coord_conventions : enable
#extension GL_KHR_blend_equation_advanced : enable
#extension GL_ARB_gpu_shader5 : enable
#endif
#define highp
Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
26. January 2022
So let me be clear now..by our convention of heading up our .scn files with 'minVersion: 1.2.0.80'we should really be saying 'minVersion: 1.4.0.80' ?and/or putting the following in our shader files ?

We can ONLY put 'minVersion: 1.2.0.80'
in the .SCN file,

and If the Shader does not have it's Own Header, it will use the one created by that minVersion code.

No Higher minVersion can be used in the .scn file.
ONLY 'minVersion: 1.2.0.80'

But if the Shader is written to use a higher version of the GLSL language
Then the Shader needs the Header that will take the place of the Default Header.

Hope that clears it up..

Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
26. January 2022
Shader Toy currently uses Version: WebGL 2.0
Which is equivalent to GLSL #Version 330

See the chart here

https://en.wikipedia.org/wiki/OpenGL_Shading_Language
ComteDracula
Mitglied seit in Aug 2017

1295 Beiträge
28. January 2022
Thanks @EvethangForever

The background of the ET - FractalGarden140 scene remains beige.

The other scenes are correct. 😊


Merci @EvethangForever

Le fond d'écran de la scène ET - FractalGarden140 reste de couleur beige.

Les autres scènes sont correctes. 😊
EverthangForever
Mitglied seit in Oct 2009

2477 Beiträge
28. January 2022 (edited)
@ComteDracula merci. Votre Goldballs.fsh ne compile 😪
Je ne vois aucune erreur dans mon vghd.log encore pour me permettre de comprendre le problème.
J'aurais besoin de voir le texte ERROR dans votre dernier vghd.log

@ComteDracula thank you. Your Goldballs.fsh is not compiling 😪
I see no error in my vghd.log yet to allow me to understand your problem wih FG140
I would need to see the ERROR text in your latest vghd.log
Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
28. January 2022
Goldballs.fsh
Mouse is defined as a vec4
#define mouse vec4(0.0,0.0, 0.0,0.0)
but later used in a vec2 formula

so you need a swizzle to go from a vec4 to a vec2
Change line 26

from this
// Mouse in lower half: zoom into vortex / solid

vec2 c = (mouse - 0.5) * 2.5;


to This

// Mouse in lower half: zoom into vortex / solid

vec2 c = (mouse.xy - 0.5) * 2.5;
Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
28. January 2022
it's really a shame that we don't have the ability to use the mouse as an input to the shaders.
the Goldballs.fsh calculates the JuliaBrot set
and with mouse input you can change the Zoom in point.

here is a little change to give a view close to the edge.

change line 26 from


vec2 c = (mouse.xy - 0.5) * 2.5;

to this


//vec2 c = (mouse.xy - 0.5) * 2.5;
float my = -0.31; // mouse y
float mx = -0.68179 ; // mouse x
vec2 c = vec2(mx,my); // fake mouse input

now you can play with the mx and my floats to alter the zoom in location.
Wyldanimal
MODERATOR
Mitglied seit in Mar 2008

3960 Beiträge
28. January 2022
And to get a deeper Zoom
you can change line 31

from this

float zoom = exp(cos(time*0.2)*4.0-2.0);

to This

float zoom = exp(cos(time*0.2)*7.5-4.0);
EverthangForever
Mitglied seit in Oct 2009

2477 Beiträge
28. January 2022 (edited)
Thanks @WA , the FG140 has been updated to include the mouse swizzle
and I've included ( but as yet commented out ) your optional changes to floats
and zoom values with the related notes on how to activate same.

@ComteDracula bonjour. re-télécharger / extraire est nécessaire:
https://scenes.virtuastripper.net/ET_FractalGarden137-142.zip
zip size = 262 Kb
EverthangForever
Mitglied seit in Oct 2009

2477 Beiträge
28. January 2022 (edited)
@WA just harking back to some earlier issues:
------
@WA - I noticed an overlooked bug in FG124
the texture for the stage has the wrong path.
causes the Clipname to be used instead
correct srry
lazy bad me - Last update I just added PPstageMini.png
to the textures folder. Stage being so ubiquitous,
I am almost sure to make the same path typo again .
-------
Re: FG133WA01 shader version issue:
..to override the default header, the shader should include
one of it's own.

This Header fixes the original shader.

#version 140
#ifdef GL_KHR_blend_equation_advanced
#extension GL_ARB_fragment_coord_conventions : enable
#extension GL_KHR_blend_equation_advanced : enable
#extension GL_ARB_gpu_shader5 : enable
#endif
#define highp

in my rig, just declaring '#version 140' or even '130'as an initial header in the shader
file Silver TilingsMod02.fsh is enough to stop all compiles ( incl.
the underlaying Viscosity Clone shader) , with the resulting error in vghd.log

2022-01-29T00:54:06[] WARNING[QOpenGLShader::compile(Fragment): 0(10) : error C0204: version directive must be first statement and may not be repeated

2022-01-29T00:54:06[] WARNING[*** Problematic Fragment shader source code ***]
ComteDracula
Mitglied seit in Aug 2017

1295 Beiträge
28. January 2022 (edited)
@EverthangForever

Everything is now perfect.

Is there a solution finally for the slowdown and the jerks in the movements of the girls in the scene 133WA01?

A big Thank you for this creative work which I appreciate very much. 😊


@EverthangForever

Tout est maintenant parfait.

Y a-t'il une solution finalement pour le ralentissement et les à coups dans les mouvements des filles dans la scène 133WA01 ?

Un gros Merci pour ce travail créatif que j'apprécie beaucoup. 😊
EverthangForever
Mitglied seit in Oct 2009

2477 Beiträge
28. January 2022 (edited)
@ComteDracula Bon à entendre 👍
J'explore la cause des secousses dans les mouvements des filles aussi.
@WA a de bonnes idées. Je suis très désireux de voir si un shader individuel
peut adopter ses propres compatibilités de version OpenGL. Nous verrons

@ComteDracula Good to hear 👍
I am exploring the cause of the jerks in the movements of the girls also..
@WA has some great ideas . i am very keen to see if an individual shader
can adopt its own OpenGL version compatibilities. We will see
ComteDracula
Mitglied seit in Aug 2017

1295 Beiträge
28. January 2022
Ok thanks @EverthangForever.

Your work really adds to the program. 😊


Ok merci @EverthangForever.

Votre travail apporte un vrai plus au programme. 😊

Noch keine Teilnahmeberechtigung

Als ein Gratisnutzer von iStripper bist du nicht berechtigt Beiträge zu schreiben oder neue Topics zu starten.
Aber du hast Zugriff auf die grundlegenden Bereiche und kannst unsere Community kennen lernen