|
|
|
|
|
|
|
|
|
const vs = `#define STANDARD |
|
varying vec3 vViewPosition; |
|
#ifdef USE_TRANSMISSION |
|
varying vec3 vWorldPosition; |
|
#endif |
|
#include <common> |
|
#include <batching_pars_vertex> |
|
#include <uv_pars_vertex> |
|
#include <displacementmap_pars_vertex> |
|
#include <color_pars_vertex> |
|
#include <fog_pars_vertex> |
|
#include <normal_pars_vertex> |
|
#include <morphtarget_pars_vertex> |
|
#include <skinning_pars_vertex> |
|
#include <shadowmap_pars_vertex> |
|
#include <logdepthbuf_pars_vertex> |
|
#include <clipping_planes_pars_vertex> |
|
|
|
uniform float time; |
|
|
|
uniform vec4 inputData; |
|
uniform vec4 outputData; |
|
|
|
vec3 calc( vec3 pos ) { |
|
|
|
vec3 dir = normalize( pos ); |
|
vec3 p = dir + vec3( time, 0., 0. ); |
|
return pos + |
|
1. * inputData.x * inputData.y * dir * (.5 + .5 * sin(inputData.z * pos.x + time)) + |
|
1. * outputData.x * outputData.y * dir * (.5 + .5 * sin(outputData.z * pos.y + time)) |
|
; |
|
} |
|
|
|
vec3 spherical( float r, float theta, float phi ) { |
|
return r * vec3( |
|
cos( theta ) * cos( phi ), |
|
sin( theta ) * cos( phi ), |
|
sin( phi ) |
|
); |
|
} |
|
|
|
void main() { |
|
#include <uv_vertex> |
|
#include <color_vertex> |
|
#include <morphinstance_vertex> |
|
#include <morphcolor_vertex> |
|
#include <batching_vertex> |
|
#include <beginnormal_vertex> |
|
#include <morphnormal_vertex> |
|
#include <skinbase_vertex> |
|
#include <skinnormal_vertex> |
|
#include <defaultnormal_vertex> |
|
#include <normal_vertex> |
|
#include <begin_vertex> |
|
|
|
float inc = 0.001; |
|
|
|
float r = length( position ); |
|
float theta = ( uv.x + 0.5 ) * 2. * PI; |
|
float phi = -( uv.y + 0.5 ) * PI; |
|
|
|
vec3 np = calc( spherical( r, theta, phi ) ); |
|
|
|
vec3 tangent = normalize( calc( spherical( r, theta + inc, phi ) ) - np ); |
|
vec3 bitangent = normalize( calc( spherical( r, theta, phi + inc ) ) - np ); |
|
transformedNormal = -normalMatrix * normalize( cross( tangent, bitangent ) ); |
|
|
|
vNormal = normalize( transformedNormal ); |
|
|
|
transformed = np; |
|
|
|
#include <morphtarget_vertex> |
|
#include <skinning_vertex> |
|
#include <displacementmap_vertex> |
|
#include <project_vertex> |
|
#include <logdepthbuf_vertex> |
|
#include <clipping_planes_vertex> |
|
vViewPosition = - mvPosition.xyz; |
|
#include <worldpos_vertex> |
|
#include <shadowmap_vertex> |
|
#include <fog_vertex> |
|
#ifdef USE_TRANSMISSION |
|
vWorldPosition = worldPosition.xyz; |
|
#endif |
|
}`; |
|
|
|
export {vs}; |
|
|