summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/base/shaders
diff options
context:
space:
mode:
authorDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
committerDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
commitc6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch)
tree1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/utils/asymptote/base/shaders
parent07ee7222e389b0777456b427a55c22d0e6ffd267 (diff)
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/base/shaders')
-rw-r--r--Build/source/utils/asymptote/base/shaders/fragment.glsl227
-rw-r--r--Build/source/utils/asymptote/base/shaders/vertex.glsl49
2 files changed, 0 insertions, 276 deletions
diff --git a/Build/source/utils/asymptote/base/shaders/fragment.glsl b/Build/source/utils/asymptote/base/shaders/fragment.glsl
deleted file mode 100644
index 057acbc744f..00000000000
--- a/Build/source/utils/asymptote/base/shaders/fragment.glsl
+++ /dev/null
@@ -1,227 +0,0 @@
-struct Material
-{
- vec4 diffuse,emissive,specular;
- vec4 parameters;
-};
-
-struct Light
-{
- vec3 direction;
- vec3 color;
-};
-
-uniform int nlights;
-uniform Light lights[max(Nlights,1)];
-
-uniform MaterialBuffer {
- Material Materials[Nmaterials];
-};
-
-#ifdef NORMAL
-#ifndef ORTHOGRAPHIC
-in vec3 ViewPosition;
-#endif
-in vec3 Normal;
-vec3 normal;
-#endif
-
-#ifdef COLOR
-in vec4 Color;
-#endif
-
-flat in int materialIndex;
-out vec4 outColor;
-
-// PBR material parameters
-vec3 Diffuse; // Diffuse for nonmetals, reflectance for metals.
-vec3 Specular; // Specular tint for nonmetals
-float Metallic; // Metallic/Nonmetals parameter
-float Fresnel0; // Fresnel at zero for nonmetals
-float Roughness2; // roughness squared, for smoothing
-
-#ifdef ENABLE_TEXTURE
-uniform sampler2D environmentMap;
-const float PI=acos(-1.0);
-const float twopi=2*PI;
-const float halfpi=PI/2;
-
-const int numSamples=7;
-
-// (x,y,z) -> (r,theta,phi);
-// theta -> [0,\pi]: colatitude
-// phi -> [0, 2\pi]: longitude
-vec3 cart2sphere(vec3 cart)
-{
- float x=cart.z;
- float y=cart.x;
- float z=cart.y;
-
- float r=length(cart);
- float phi=atan(y,x);
- float theta=acos(z/r);
-
- return vec3(r,phi,theta);
-}
-
-vec2 normalizedAngle(vec3 cartVec)
-{
- vec3 sphericalVec=cart2sphere(cartVec);
- sphericalVec.y=sphericalVec.y/(2*PI)-0.25;
- sphericalVec.z=sphericalVec.z/PI;
- return sphericalVec.yz;
-}
-#endif
-
-#ifdef NORMAL
-// h is the halfway vector between normal and light direction
-// GGX Trowbridge-Reitz Approximation
-float NDF_TRG(vec3 h)
-{
- float ndoth=max(dot(normal,h),0.0);
- float alpha2=Roughness2*Roughness2;
- float denom=ndoth*ndoth*(alpha2-1.0)+1.0;
- return denom != 0.0 ? alpha2/(denom*denom) : 0.0;
-}
-
-float GGX_Geom(vec3 v)
-{
- float ndotv=max(dot(v,normal),0.0);
- float ap=1.0+Roughness2;
- float k=0.125*ap*ap;
- return ndotv/((ndotv*(1.0-k))+k);
-}
-
-float Geom(vec3 v, vec3 l)
-{
- return GGX_Geom(v)*GGX_Geom(l);
-}
-
-// Schlick's approximation
-float Fresnel(vec3 h, vec3 v, float fresnel0)
-{
- float a=1.0-max(dot(h,v),0.0);
- float b=a*a;
- return fresnel0+(1.0-fresnel0)*b*b*a;
-}
-
-vec3 BRDF(vec3 viewDirection, vec3 lightDirection)
-{
- vec3 lambertian=Diffuse;
- // Cook-Torrance model
- vec3 h=normalize(lightDirection+viewDirection);
-
- float omegain=max(dot(viewDirection,normal),0.0);
- float omegaln=max(dot(lightDirection,normal),0.0);
-
- float D=NDF_TRG(h);
- float G=Geom(viewDirection,lightDirection);
- float F=Fresnel(h,viewDirection,Fresnel0);
-
- float denom=4.0*omegain*omegaln;
- float rawReflectance=denom > 0.0 ? (D*G)/denom : 0.0;
-
- vec3 dielectric=mix(lambertian,rawReflectance*Specular,F);
- vec3 metal=rawReflectance*Diffuse;
-
- return mix(dielectric,metal,Metallic);
-}
-#endif
-
-void main()
-{
- vec4 diffuse;
- vec4 emissive;
-
- Material m;
-#ifdef TRANSPARENT
- m=Materials[abs(materialIndex)-1];
- emissive=m.emissive;
- if(materialIndex >= 0)
- diffuse=m.diffuse;
- else {
- diffuse=Color;
-#if Nlights == 0
- emissive += Color;
-#endif
- }
-#else
- m=Materials[int(materialIndex)];
- emissive=m.emissive;
-#ifdef COLOR
- diffuse=Color;
-#if Nlights == 0
- emissive += Color;
-#endif
-#else
- diffuse=m.diffuse;
-#endif
-#endif
-
-#if defined(NORMAL) && Nlights > 0
- Specular=m.specular.rgb;
- vec4 parameters=m.parameters;
- Roughness2=1.0-parameters[0];
- Roughness2=Roughness2*Roughness2;
- Metallic=parameters[1];
- Fresnel0=parameters[2];
- Diffuse=diffuse.rgb;
-
- // Given a point x and direction \omega,
- // L_i=\int_{\Omega}f(x,\omega_i,\omega) L(x,\omega_i)(\hat{n}\cdot \omega_i)
- // d\omega_i, where \Omega is the hemisphere covering a point,
- // f is the BRDF function, L is the radiance from a given angle and position.
-
- normal=normalize(Normal);
- normal=gl_FrontFacing ? normal : -normal;
-#ifdef ORTHOGRAPHIC
- vec3 viewDir=vec3(0.0,0.0,1.0);
-#else
- vec3 viewDir=-normalize(ViewPosition);
-#endif
- // For a finite point light, the rendering equation simplifies.
- vec3 color=emissive.rgb;
- for(int i=0; i < nlights; ++i) {
- Light Li=lights[i];
- vec3 L=Li.direction;
- float cosTheta=max(dot(normal,L),0.0); // $\omega_i \cdot n$ term
- vec3 radiance=cosTheta*Li.color;
- color += BRDF(viewDir,L)*radiance;
- }
-
-#if defined(ENABLE_TEXTURE) && !defined(COLOR)
- // Experimental environment radiance using Riemann sums;
- // can also do importance sampling.
- vec3 envRadiance=vec3(0.0,0.0,0.0);
-
- vec3 normalPerp=vec3(-normal.y,normal.x,0.0);
- if(length(normalPerp) == 0.0)
- normalPerp=vec3(1.0,0.0,0.0);
-
- // we now have a normal basis;
- normalPerp=normalize(normalPerp);
- vec3 normalPerp2=normalize(cross(normal,normalPerp));
-
- const float step=1.0/numSamples;
- const float phistep=twopi*step;
- const float thetastep=halfpi*step;
- for (int iphi=0; iphi < numSamples; ++iphi) {
- float phi=iphi*phistep;
- for (int itheta=0; itheta < numSamples; ++itheta) {
- float theta=itheta*thetastep;
-
- vec3 azimuth=cos(phi)*normalPerp+sin(phi)*normalPerp2;
- vec3 L=sin(theta)*azimuth+cos(theta)*normal;
-
- vec3 rawRadiance=texture(environmentMap,normalizedAngle(L)).rgb;
- vec3 surfRefl=BRDF(Z,L);
- envRadiance += surfRefl*rawRadiance*sin(2.0*theta);
- }
- }
- envRadiance *= halfpi*step*step;
- color += envRadiance.rgb;
-#endif
- outColor=vec4(color,diffuse.a);
-#else
- outColor=emissive;
-#endif
-}
diff --git a/Build/source/utils/asymptote/base/shaders/vertex.glsl b/Build/source/utils/asymptote/base/shaders/vertex.glsl
deleted file mode 100644
index 4b2a54b9897..00000000000
--- a/Build/source/utils/asymptote/base/shaders/vertex.glsl
+++ /dev/null
@@ -1,49 +0,0 @@
-in vec3 position;
-
-uniform mat3 normMat;
-
-#ifdef NORMAL
-#ifndef ORTHOGRAPHIC
-out vec3 ViewPosition;
-#endif
-in vec3 normal;
-out vec3 Normal;
-#endif
-
-in int material;
-
-#ifdef COLOR
-in vec4 color;
-out vec4 Color;
-#endif
-
-#ifdef WIDTH
-in float width;
-#endif
-
-uniform mat4 projViewMat;
-uniform mat4 viewMat;
-
-flat out int materialIndex;
-
-void main()
-{
- vec4 v=vec4(position,1.0);
- gl_Position=projViewMat*v;
-#ifdef NORMAL
-#ifndef ORTHOGRAPHIC
- ViewPosition=(viewMat*v).xyz;
-#endif
- Normal=normalize(normal*normMat);
-#endif
-
-#ifdef COLOR
- Color=color;
-#endif
-
-#ifdef WIDTH
- gl_PointSize=width;
-#endif
-
- materialIndex=material;
-}