UNPKG

@threlte/extras

Version:

Utilities, abstractions and plugins for your Threlte apps

3 lines (2 loc) 1.45 kB
export declare const vertexShader = "\n#include <common>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\nuniform float thickness;\nuniform bool screenspace;\nuniform vec2 size;\n\nvoid main() {\n #if defined (USE_SKINNING)\n #include <beginnormal_vertex>\n #include <morphnormal_vertex>\n #include <skinbase_vertex>\n #include <skinnormal_vertex>\n #include <defaultnormal_vertex>\n #endif\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <skinning_vertex>\n #include <project_vertex>\n vec4 tNormal = vec4(normal, 0.0);\n vec4 tPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n tNormal = instanceMatrix * tNormal;\n tPosition = instanceMatrix * tPosition;\n #endif\n if (!screenspace) {\n vec3 newPosition = tPosition.xyz + tNormal.xyz * thickness;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(newPosition, 1.0);\n } else {\n vec4 clipPosition = projectionMatrix * modelViewMatrix * tPosition;\n vec4 clipNormal = projectionMatrix * modelViewMatrix * tNormal;\n vec2 offset = normalize(clipNormal.xy) * thickness / size * clipPosition.w * 2.0;\n clipPosition.xy += offset;\n gl_Position = clipPosition;\n }\n}"; export declare const fragmentShader = "\nuniform vec3 color;\nuniform float opacity;\nvoid main(){\n gl_FragColor = vec4(color, opacity);\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}\n";