Pārlūkot izejas kodu

move and delete in prep for merge with three.js

Gregg Tavares 3 gadi atpakaļ
vecāks
revīzija
3b469c0dd0
100 mainītis faili ar 0 papildinājumiem un 3179 dzēšanām
  1. 0 111
      .eslintrc.js
  2. 0 9
      .github/ISSUE_TEMPLATE/bug-issue-report.md
  3. 0 9
      .github/ISSUE_TEMPLATE/question.md
  4. 0 9
      .github/ISSUE_TEMPLATE/request.md
  5. 0 9
      .github/ISSUE_TEMPLATE/suggest-topic.md
  6. 0 9
      .github/ISSUE_TEMPLATE/translation.md
  7. 0 35
      .github/workflows/deploy-to-gh-pages.yml
  8. 0 1
      .npmrc
  9. 0 20
      .vscode/launch.json
  10. 0 94
      .vscode/settings.json
  11. 0 12
      3rdparty/dat.gui.min.js
  12. 0 1665
      3rdparty/dat.gui.module.js
  13. 0 1
      3rdparty/jquery-3.3.1.slim.min.js
  14. 0 1
      3rdparty/split.min.js
  15. 0 2
      CNAME
  16. 0 24
      DEVELOPMENT.md
  17. 0 557
      Gruntfile.js
  18. 0 62
      MAINTENANCE.md
  19. 0 31
      build/templates/analytics.template
  20. 0 9
      build/templates/diagram.template
  21. 0 5
      build/templates/example.template
  22. 0 11
      build/templates/header.template
  23. 0 9
      build/templates/image.template
  24. 0 123
      build/templates/index.template
  25. 0 2
      build/templates/lang-select.template
  26. 0 5
      build/templates/langs-meta.template
  27. 0 6
      build/templates/languages.template
  28. 0 164
      build/templates/lesson.template
  29. 0 83
      build/templates/missing.template
  30. 0 7
      build/templates/octocat-icon.svg
  31. 0 92
      build/templates/repobanner.template
  32. 0 1
      build/templates/warning.template
  33. 0 1
      contributors.md
  34. 0 0
      manual/en/align-html-elements-to-3d.html
  35. 0 0
      manual/en/backgrounds.html
  36. 0 0
      manual/en/billboards.html
  37. 0 0
      manual/en/cameras.html
  38. 0 0
      manual/en/canvas-textures.html
  39. 0 0
      manual/en/cleanup.html
  40. 0 0
      manual/en/custom-buffergeometry.html
  41. 0 0
      manual/en/custom-geometry.html
  42. 0 0
      manual/en/debugging-glsl.html
  43. 0 0
      manual/en/debugging-javascript.html
  44. 0 0
      manual/en/fog.html
  45. 0 0
      manual/en/fundamentals.html
  46. 0 0
      manual/en/game.html
  47. 0 0
      manual/en/indexed-textures.html
  48. 0 0
      manual/en/lights.html
  49. 0 0
      manual/en/load-gltf.html
  50. 0 0
      manual/en/load-obj.html
  51. 0 0
      manual/en/material-table.html
  52. 0 0
      manual/en/materials.html
  53. 0 0
      manual/en/multiple-scenes.html
  54. 0 0
      manual/en/offscreencanvas.html
  55. 0 0
      manual/en/optimize-lots-of-objects-animated.html
  56. 0 0
      manual/en/optimize-lots-of-objects.html
  57. 0 0
      manual/en/picking.html
  58. 0 0
      manual/en/post-processing-3dlut.html
  59. 0 0
      manual/en/post-processing.html
  60. 0 0
      manual/en/prerequisites.html
  61. 0 0
      manual/en/primitives.html
  62. 0 0
      manual/en/rendering-on-demand.html
  63. 0 0
      manual/en/rendertargets.html
  64. 0 0
      manual/en/responsive.html
  65. 0 0
      manual/en/scenegraph.html
  66. 0 0
      manual/en/setup.html
  67. 0 0
      manual/en/shadertoy.html
  68. 0 0
      manual/en/shadows.html
  69. 0 0
      manual/en/textures.html
  70. 0 0
      manual/en/tips.html
  71. 0 0
      manual/en/transparency.html
  72. 0 0
      manual/en/voxel-geometry.html
  73. 0 0
      manual/en/webxr-look-to-select.html
  74. 0 0
      manual/en/webxr-point-to-select.html
  75. 0 0
      manual/en/webxr.html
  76. 0 0
      manual/examples/3dlut-base-cube-maker.html
  77. 0 0
      manual/examples/align-html-elements-to-3d-globe-too-many-labels.html
  78. 0 0
      manual/examples/align-html-elements-to-3d-globe.html
  79. 0 0
      manual/examples/align-html-to-3d-w-hiding.html
  80. 0 0
      manual/examples/align-html-to-3d-w-sorting.html
  81. 0 0
      manual/examples/align-html-to-3d.html
  82. 0 0
      manual/examples/background-css.html
  83. 0 0
      manual/examples/background-cubemap.html
  84. 0 0
      manual/examples/background-equirectangularmap.html
  85. 0 0
      manual/examples/background-scene-background-fixed-aspect.html
  86. 0 0
      manual/examples/background-scene-background.html
  87. 0 0
      manual/examples/background-separate-scene-bad-aspect.html
  88. 0 0
      manual/examples/background-separate-scene.html
  89. 0 0
      manual/examples/background-v01.html
  90. 0 0
      manual/examples/background.html
  91. 0 0
      manual/examples/billboard-labels-w-sprites-adjust-height.html
  92. 0 0
      manual/examples/billboard-labels-w-sprites.html
  93. 0 0
      manual/examples/billboard-trees-no-billboards.html
  94. 0 0
      manual/examples/billboard-trees-static-billboards.html
  95. 0 0
      manual/examples/cameras-logarithmic-depth-buffer.html
  96. 0 0
      manual/examples/cameras-orthographic-2-scenes.html
  97. 0 0
      manual/examples/cameras-orthographic-canvas-top-left-origin.html
  98. 0 0
      manual/examples/cameras-perspective-2-scenes.html
  99. 0 0
      manual/examples/cameras-perspective.html
  100. 0 0
      manual/examples/cameras-z-fighting.html

+ 0 - 111
.eslintrc.js

@@ -1,111 +0,0 @@
-/* global module */
-module.exports = {
-  'env': {
-    'browser': true,
-    'es6': true,
-  },
-  'parserOptions': {
-    'sourceType': 'module',
-    'ecmaVersion': 9,
-    'ecmaFeatures': {
-      'jsx': true,
-    },
-  },
-  'plugins': [
-    'eslint-plugin-html',
-    'eslint-plugin-optional-comma-spacing',
-    'eslint-plugin-one-variable-per-var',
-    'eslint-plugin-require-trailing-comma',
-  ],
-  'extends': 'eslint:recommended',
-  'rules': {
-    'no-alert': 2,
-    'no-array-constructor': 2,
-    'no-caller': 2,
-    'no-catch-shadow': 2,
-    'no-const-assign': 2,
-    'no-eval': 2,
-    'no-extend-native': 2,
-    'no-extra-bind': 2,
-    'no-implied-eval': 2,
-    'no-inner-declarations': 0,
-    'no-iterator': 2,
-    'no-label-var': 2,
-    'no-labels': 2,
-    'no-lone-blocks': 0,
-    'no-multi-str': 2,
-    'no-native-reassign': 2,
-    'no-new': 2,
-    'no-new-func': 2,
-    'no-new-object': 2,
-    'no-new-wrappers': 2,
-    'no-octal-escape': 2,
-    'no-process-exit': 2,
-    'no-proto': 2,
-    'no-return-assign': 2,
-    'no-script-url': 2,
-    'no-self-assign': 0,
-    'no-sequences': 2,
-    'no-shadow-restricted-names': 2,
-    'no-spaced-func': 2,
-    'no-trailing-spaces': 2,
-    'no-undef-init': 2,
-    'no-unused-expressions': 2,
-    'no-use-before-define': 0,
-    'no-var': 2,
-    'no-with': 2,
-    'prefer-const': 2,
-    'prefer-object-spread': 2,
-    'consistent-return': 2,
-    'curly': [2, 'all'],
-    'no-extra-parens': [2, 'functions'],
-    'eqeqeq': 2,
-    'new-cap': 2,
-    'new-parens': 2,
-    'semi-spacing': [2, {'before': false, 'after': true}],
-    'space-infix-ops': 2,
-    'space-unary-ops': [2, { 'words': true, 'nonwords': false }],
-    'yoda': [2, 'never'],
-
-    'brace-style': [2, '1tbs', { 'allowSingleLine': false }],
-    'camelcase': [0],
-    'comma-spacing': 0,
-    'comma-dangle': 0,
-    'comma-style': [2, 'last'],
-    'optional-comma-spacing/optional-comma-spacing': [2, {'after': true}],
-    'dot-notation': 0,
-    'eol-last': [0],
-    'global-strict': [0],
-    'key-spacing': [0],
-    'no-comma-dangle': [0],
-    'no-irregular-whitespace': 2,
-    'no-multi-spaces': [0],
-    'no-loop-func': 0,
-    'no-obj-calls': 2,
-    'no-redeclare': [0],
-    'no-shadow': [0],
-    'no-undef': [2],
-    'no-unreachable': 2,
-    'one-variable-per-var/one-variable-per-var': [2],
-    'quotes': [2, 'single'],
-    'require-atomic-updates': 0,
-    'require-trailing-comma/require-trailing-comma': [2],
-    'require-yield': 0,
-    'semi': [2, 'always'],
-    'strict': [2, 'global'],
-    'space-before-function-paren': [2, 'never'],
-    'keyword-spacing': [1, {'before': true, 'after': true, 'overrides': {}} ],
-  },
-  'overrides': [
-    {
-      'files': [
-        'Gruntfile.js',
-        'fix.js',
-      ],
-      'parserOptions': {
-        'sourceType': 'script',
-      },
-    },
-  ],
-};
-

+ 0 - 9
.github/ISSUE_TEMPLATE/bug-issue-report.md

@@ -1,9 +0,0 @@
----
-name: Bug/Issue report
-about: Create a report to help us improve
-title: ''
-labels: bug / issue
-assignees: ''
-
----
-

+ 0 - 9
.github/ISSUE_TEMPLATE/question.md

@@ -1,9 +0,0 @@
----
-name: Question
-about: Please ask in comments or on stackoverflow
-title: ''
-labels: question
-assignees: ''
-
----
-

+ 0 - 9
.github/ISSUE_TEMPLATE/request.md

@@ -1,9 +0,0 @@
----
-name: Request
-about: Request
-title: ''
-labels: ''
-assignees: ''
-
----
-

+ 0 - 9
.github/ISSUE_TEMPLATE/suggest-topic.md

@@ -1,9 +0,0 @@
----
-name: Suggest Topic
-about: Suggest an idea for a new article (ideas welcome but no promises)
-title: "[SUGGESTION]"
-labels: suggested topic
-assignees: ''
-
----
-

+ 0 - 9
.github/ISSUE_TEMPLATE/translation.md

@@ -1,9 +0,0 @@
----
-name: Translation
-about: Translation related
-title: ''
-labels: ''
-assignees: ''
-
----
-

+ 0 - 35
.github/workflows/deploy-to-gh-pages.yml

@@ -1,35 +0,0 @@
-name: Build and Deploy
-on:
-  push:
-    branches:
-      - master
-  pull_request:
-jobs:
-  build-and-deploy:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout 🍔🍟🥤
-        uses: actions/[email protected]
-        with:
-          persist-credentials: false
-
-      - name: Use Node.js 😂
-        uses: actions/setup-node@v1
-        with:
-          node-version: '14.x'
-
-      - name: Install and Build 🏭
-        run: |
-          npm i
-          npm run pre-build
-          npm run build-ci
-        env:
-          LESSON_BUILDER_ENV: production
-
-      - name: Deploy 📦
-        if: ${{ github.event_name == 'push' }}
-        uses: JamesIves/[email protected]
-        with:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-          BRANCH: gh-pages
-          FOLDER: out

+ 0 - 1
.npmrc

@@ -1 +0,0 @@
-save-prefix = ""

+ 0 - 20
.vscode/launch.json

@@ -1,20 +0,0 @@
-{
-  // Use IntelliSense to learn about possible attributes.
-  // Hover to view descriptions of existing attributes.
-  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
-  "version": "0.2.0",
-  "configurations": [
-
-    {
-      "type": "node",
-      "request": "launch",
-      "name": "Build Lessons",
-      "program": "${workspaceFolder}/node_modules/grunt/bin/grunt",
-      "args": ["buildlessons"],
-      "console": "internalConsole",
-      "env": {
-        "ARTICLE_FILTER": "fundamentals"
-      }
-    }
-  ]
-}

+ 0 - 94
.vscode/settings.json

@@ -1,94 +0,0 @@
-{
-  "eslint.validate": [
-        "javascript",
-        "html"
-  ],
-  "cSpell.words": [
-    "Collada",
-    "GPUs",
-    "Hmmm",
-    "JPGs",
-    "MCVE",
-    "Minecraft",
-    "Morphtargets",
-    "PNGs",
-    "Phong",
-    "Raycaster",
-    "Shadertoy",
-    "Skybox",
-    "Skyboxes",
-    "Toon",
-    "Tweens",
-    "VRML",
-    "Voxel",
-    "anims",
-    "bottombar",
-    "buffergeometry",
-    "clearcoat",
-    "contextmenu",
-    "cubemaps",
-    "dataset",
-    "datasets",
-    "debounced",
-    "devtools",
-    "divs",
-    "drawingbuffer",
-    "equirectangular",
-    "grayscale",
-    "heightmap",
-    "ifdef",
-    "jank",
-    "keydown",
-    "keyup",
-    "lightblue",
-    "lowpoly",
-    "luts",
-    "metalness",
-    "mipmap",
-    "mipmaps",
-    "morphtarget",
-    "mousedown",
-    "mouseleave",
-    "mousemove",
-    "mouseout",
-    "mouseup",
-    "nobg",
-    "noinvertdark",
-    "nurbs",
-    "offscreencanvas",
-    "orbitcontrols",
-    "paletted",
-    "pointerdown",
-    "pointermove",
-    "pointerup",
-    "posterize",
-    "prepend",
-    "raycast",
-    "raycasting",
-    "rdparty",
-    "recomposite",
-    "renderer's",
-    "rendertargets",
-    "rgba",
-    "scanline",
-    "scanlines",
-    "scenegraph",
-    "scenegraphs",
-    "shader's",
-    "skyboxs",
-    "tabindex",
-    "teleporting",
-    "texcoords",
-    "threejs",
-    "threejsfundamentals",
-    "touchend",
-    "touchmove",
-    "touchstart",
-    "tween's",
-    "typedarrays",
-    "untrack",
-    "voxel's",
-    "voxels",
-    "wireframe"
-  ]
-}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 12
3rdparty/dat.gui.min.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 1665
3rdparty/dat.gui.module.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 1
3rdparty/jquery-3.3.1.slim.min.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 1
3rdparty/split.min.js


+ 0 - 2
CNAME

@@ -1,2 +0,0 @@
-threejsfundamentals.org
-

+ 0 - 24
DEVELOPMENT.md

@@ -1,24 +0,0 @@
-# DEVELOPMENT NOTES
-
-## archiving old versions
-
-(hopefully automated someday)
-
-1. make repo on github
-2. in threejsfundamentals.org
-   1. git fetch origin gh-pages
-   2. git checkout gh-pages
-   3. git rebase origin/gh-pages?
-   4. git clone --branch gh-pages ../old.threejsfundamentals/rXXX
-3. cd ../old.threejsfundamentals.rXXX
-4. git remote rm origin
-5. git remote add origin <new-github-repo>
-6. edit CNAME
-7. delete 
-   * robots.txt
-   * sitemap.xml
-   * atom.xml
-   * Gruntfile.js
-8. s/\/threejsfundamentals.org/\/rXXX.threejsfundamentals.org/g
-9. git push -u origin gh-pages
-10. Update DNS (cloudflare)

+ 0 - 557
Gruntfile.js

@@ -1,557 +0,0 @@
-/*eslint-env node*/
-
-'use strict';
-
-process.on('unhandledRejection', up => {
-  throw up;
-});
-
-const fs = require('fs');
-const path = require('path');
-const semver = require('semver');
-const liveEditor = require('@gfxfundamentals/live-editor');
-const liveEditorPath = path.dirname(require.resolve('@gfxfundamentals/live-editor'));
-const jsdom = require('jsdom');
-const {JSDOM} = jsdom;
-
-// make a fake window because jquery sucks
-const dom = new JSDOM('');
-global.window = dom.window;
-global.document = global.window.document;
-const jquery = require('jquery');
-
-module.exports = function(grunt) {
-
-  require('load-grunt-tasks')(grunt);
-
-  const s_ignoreRE = /\.(md|py|sh|enc)$/i;
-  function noMds(filename) {
-    return !s_ignoreRE.test(filename);
-  }
-
-  const s_isMdRE = /\.md$/i;
-  function mdsOnly(filename) {
-    return s_isMdRE.test(filename);
-  }
-
-  function notFolder(filename) {
-    return !fs.statSync(filename).isDirectory();
-  }
-
-  function noMdsNoFolders(filename) {
-    return noMds(filename) && notFolder(filename);
-  }
-
-  grunt.initConfig({
-    eslint: {
-      lib: {
-        src: [
-          'threejs/resources/*.js',
-        ],
-      },
-      support: {
-        src: [
-          'Gruntfile.js',
-          'build/js/build.js',
-        ],
-      },
-      examples: {
-        src: [
-          'threejs/*.html',
-          'threejs/lessons/resources/*.js',
-          '!threejs/lessons/resources/prettify.js',
-          'threejs/lessons/resources/*.html',
-        ],
-      },
-    },
-    copy: {
-      main: {
-        files: [
-          { expand: false, src: '*', dest: 'out/', filter: noMdsNoFolders, },
-          { expand: true, cwd: `${liveEditor.monacoEditor}/`, src: 'min/**', dest: 'out/monaco-editor/', nonull: true, },
-          { expand: true, cwd: `${liveEditorPath}/src/`, src: '**', dest: 'out/threejs/resources/', nonull: true, },
-          { expand: true, src: 'threejs/**', dest: 'out/', filter: noMds, },
-          { expand: true, src: '3rdparty/**', dest: 'out/', },
-        ],
-      },
-    },
-    clean: [
-      'out/**/*',
-    ],
-    buildlesson: {
-      main: {
-        files: [],
-      },
-    },
-    watch: {
-      main: {
-        files: [
-          'threejs/**',
-          '3rdparty/**',
-          'node_modules/@gfxfundamentals/live-editor/src/**',
-        ],
-        tasks: ['copy'],
-        options: {
-          spawn: false,
-        },
-      },
-      lessons: {
-        files: [
-          'threejs/lessons/**/threejs*.md',
-        ],
-        tasks: ['buildlesson'],
-        options: {
-          spawn: false,
-        },
-      },
-    },
-  });
-
-  let changedFiles = {};
-  const onChange = grunt.util._.debounce(function() {
-    grunt.config('copy.main.files', Object.keys(changedFiles).filter(noMds).map((file) => {
-      const copy = {
-        src: file,
-        dest: 'out/',
-      };
-      if (file.indexOf('live-editor') >= 0) {
-        copy.cwd = `${path.dirname(file)}/`;
-        copy.src = path.basename(file);
-        copy.expand = true;
-        copy.dest = 'out/threejs/resources/';
-      }
-      return copy;
-    }));
-    grunt.config('buildlesson.main.files', Object.keys(changedFiles).filter(mdsOnly).map((file) => {
-      return {
-        src: file,
-      };
-    }));
-    changedFiles = {};
-  }, 200);
-  grunt.event.on('watch', function(action, filepath) {
-    changedFiles[filepath] = action;
-    onChange();
-  });
-
-  function fixThreeJSLinks(html) {
-    const supportedLangs = {
-      'en': true,
-      'zh': true,
-      'ko': true,
-    };
-
-    global.document.open('text/html', 'replace');
-    global.document.write(html);
-    global.document.close();
-    const $ = jquery;
-
-    function insertLang(codeKeywordLinks) {
-      const lang = document.documentElement.lang.substr(0, 2).toLowerCase();
-      const langPart = `#api/${supportedLangs[lang] ? lang : 'en'}/`;
-      const langAddedLinks = {};
-      for (const [keyword, url] of Object.entries(codeKeywordLinks)) {
-        langAddedLinks[keyword] = url.replace('#api/', langPart);
-      }
-      return langAddedLinks;
-    }
-
-    const codeKeywordLinks = insertLang({
-      AnimationAction: 'https://threejs.org/docs/#api/animation/AnimationAction',
-      AnimationClip: 'https://threejs.org/docs/#api/animation/AnimationClip',
-      AnimationMixer: 'https://threejs.org/docs/#api/animation/AnimationMixer',
-      AnimationObjectGroup: 'https://threejs.org/docs/#api/animation/AnimationObjectGroup',
-      AnimationUtils: 'https://threejs.org/docs/#api/animation/AnimationUtils',
-      KeyframeTrack: 'https://threejs.org/docs/#api/animation/KeyframeTrack',
-      PropertyBinding: 'https://threejs.org/docs/#api/animation/PropertyBinding',
-      PropertyMixer: 'https://threejs.org/docs/#api/animation/PropertyMixer',
-      BooleanKeyframeTrack: 'https://threejs.org/docs/#api/animation/tracks/BooleanKeyframeTrack',
-      ColorKeyframeTrack: 'https://threejs.org/docs/#api/animation/tracks/ColorKeyframeTrack',
-      NumberKeyframeTrack: 'https://threejs.org/docs/#api/animation/tracks/NumberKeyframeTrack',
-      QuaternionKeyframeTrack: 'https://threejs.org/docs/#api/animation/tracks/QuaternionKeyframeTrack',
-      StringKeyframeTrack: 'https://threejs.org/docs/#api/animation/tracks/StringKeyframeTrack',
-      VectorKeyframeTrack: 'https://threejs.org/docs/#api/animation/tracks/VectorKeyframeTrack',
-      Audio: 'https://threejs.org/docs/#api/audio/Audio',
-      AudioAnalyser: 'https://threejs.org/docs/#api/audio/AudioAnalyser',
-      AudioContext: 'https://threejs.org/docs/#api/audio/AudioContext',
-      AudioListener: 'https://threejs.org/docs/#api/audio/AudioListener',
-      PositionalAudio: 'https://threejs.org/docs/#api/audio/PositionalAudio',
-      ArrayCamera: 'https://threejs.org/docs/#api/cameras/ArrayCamera',
-      Camera: 'https://threejs.org/docs/#api/cameras/Camera',
-      CubeCamera: 'https://threejs.org/docs/#api/cameras/CubeCamera',
-      OrthographicCamera: 'https://threejs.org/docs/#api/cameras/OrthographicCamera',
-      PerspectiveCamera: 'https://threejs.org/docs/#api/cameras/PerspectiveCamera',
-      StereoCamera: 'https://threejs.org/docs/#api/cameras/StereoCamera',
-      Animation: 'https://threejs.org/docs/#api/constants/Animation',
-      Core: 'https://threejs.org/docs/#api/constants/Core',
-      CustomBlendingEquation: 'https://threejs.org/docs/#api/constants/CustomBlendingEquations',
-      DrawModes: 'https://threejs.org/docs/#api/constants/DrawModes',
-      Materials: 'https://threejs.org/docs/#api/constants/Materials',
-      Renderer: 'https://threejs.org/docs/#api/constants/Renderer',
-      Textures: 'https://threejs.org/docs/#api/constants/Textures',
-      BufferAttribute: 'https://threejs.org/docs/#api/core/BufferAttribute',
-      BufferGeometry: 'https://threejs.org/docs/#api/core/BufferGeometry',
-      Clock: 'https://threejs.org/docs/#api/core/Clock',
-      DirectGeometry: 'https://threejs.org/docs/#api/core/DirectGeometry',
-      EventDispatcher: 'https://threejs.org/docs/#api/core/EventDispatcher',
-      Face3: 'https://threejs.org/docs/#api/core/Face3',
-      InstancedBufferAttribute: 'https://threejs.org/docs/#api/core/InstancedBufferAttribute',
-      InstancedBufferGeometry: 'https://threejs.org/docs/#api/core/InstancedBufferGeometry',
-      InstancedInterleavedBuffer: 'https://threejs.org/docs/#api/core/InstancedInterleavedBuffer',
-      InterleavedBuffer: 'https://threejs.org/docs/#api/core/InterleavedBuffer',
-      InterleavedBufferAttribute: 'https://threejs.org/docs/#api/core/InterleavedBufferAttribute',
-      Layers: 'https://threejs.org/docs/#api/core/Layers',
-      Object3D: 'https://threejs.org/docs/#api/core/Object3D',
-      Raycaster: 'https://threejs.org/docs/#api/core/Raycaster',
-      Uniform: 'https://threejs.org/docs/#api/core/Uniform',
-      BufferAttributeTypes: 'https://threejs.org/docs/#api/core/bufferAttributeTypes/BufferAttributeTypes',
-      Earcut: 'https://threejs.org/docs/#api/extras/Earcut',
-      ShapeUtils: 'https://threejs.org/docs/#api/extras/ShapeUtils',
-      Curve: 'https://threejs.org/docs/#api/extras/core/Curve',
-      CurvePath: 'https://threejs.org/docs/#api/extras/core/CurvePath',
-      Font: 'https://threejs.org/docs/#api/extras/core/Font',
-      Interpolations: 'https://threejs.org/docs/#api/extras/core/Interpolations',
-      Path: 'https://threejs.org/docs/#api/extras/core/Path',
-      Shape: 'https://threejs.org/docs/#api/extras/core/Shape',
-      ShapePath: 'https://threejs.org/docs/#api/extras/core/ShapePath',
-      ArcCurve: 'https://threejs.org/docs/#api/extras/curves/ArcCurve',
-      CatmullRomCurve3: 'https://threejs.org/docs/#api/extras/curves/CatmullRomCurve3',
-      CubicBezierCurve: 'https://threejs.org/docs/#api/extras/curves/CubicBezierCurve',
-      CubicBezierCurve3: 'https://threejs.org/docs/#api/extras/curves/CubicBezierCurve3',
-      EllipseCurve: 'https://threejs.org/docs/#api/extras/curves/EllipseCurve',
-      LineCurve: 'https://threejs.org/docs/#api/extras/curves/LineCurve',
-      LineCurve3: 'https://threejs.org/docs/#api/extras/curves/LineCurve3',
-      QuadraticBezierCurve: 'https://threejs.org/docs/#api/extras/curves/QuadraticBezierCurve',
-      QuadraticBezierCurve3: 'https://threejs.org/docs/#api/extras/curves/QuadraticBezierCurve3',
-      SplineCurve: 'https://threejs.org/docs/#api/extras/curves/SplineCurve',
-      ImmediateRenderObject: 'https://threejs.org/docs/#api/extras/objects/ImmediateRenderObject',
-      BoxGeometry: 'https://threejs.org/docs/#api/geometries/BoxGeometry',
-      CircleGeometry: 'https://threejs.org/docs/#api/geometries/CircleGeometry',
-      ConeGeometry: 'https://threejs.org/docs/#api/geometries/ConeGeometry',
-      CylinderGeometry: 'https://threejs.org/docs/#api/geometries/CylinderGeometry',
-      DodecahedronGeometry: 'https://threejs.org/docs/#api/geometries/DodecahedronGeometry',
-      EdgesGeometry: 'https://threejs.org/docs/#api/geometries/EdgesGeometry',
-      ExtrudeGeometry: 'https://threejs.org/docs/#api/geometries/ExtrudeGeometry',
-      IcosahedronGeometry: 'https://threejs.org/docs/#api/geometries/IcosahedronGeometry',
-      LatheGeometry: 'https://threejs.org/docs/#api/geometries/LatheGeometry',
-      OctahedronGeometry: 'https://threejs.org/docs/#api/geometries/OctahedronGeometry',
-      ParametricGeometry: 'https://threejs.org/docs/#api/geometries/ParametricGeometry',
-      PlaneGeometry: 'https://threejs.org/docs/#api/geometries/PlaneGeometry',
-      PolyhedronGeometry: 'https://threejs.org/docs/#api/geometries/PolyhedronGeometry',
-      RingGeometry: 'https://threejs.org/docs/#api/geometries/RingGeometry',
-      ShapeGeometry: 'https://threejs.org/docs/#api/geometries/ShapeGeometry',
-      SphereGeometry: 'https://threejs.org/docs/#api/geometries/SphereGeometry',
-      TetrahedronGeometry: 'https://threejs.org/docs/#api/geometries/TetrahedronGeometry',
-      TextGeometry: 'https://threejs.org/docs/#api/geometries/TextGeometry',
-      TorusGeometry: 'https://threejs.org/docs/#api/geometries/TorusGeometry',
-      TorusKnotGeometry: 'https://threejs.org/docs/#api/geometries/TorusKnotGeometry',
-      TubeGeometry: 'https://threejs.org/docs/#api/geometries/TubeGeometry',
-      WireframeGeometry: 'https://threejs.org/docs/#api/geometries/WireframeGeometry',
-      ArrowHelper: 'https://threejs.org/docs/#api/helpers/ArrowHelper',
-      AxesHelper: 'https://threejs.org/docs/#api/helpers/AxesHelper',
-      BoxHelper: 'https://threejs.org/docs/#api/helpers/BoxHelper',
-      Box3Helper: 'https://threejs.org/docs/#api/helpers/Box3Helper',
-      CameraHelper: 'https://threejs.org/docs/#api/helpers/CameraHelper',
-      DirectionalLightHelper: 'https://threejs.org/docs/#api/helpers/DirectionalLightHelper',
-      FaceNormalsHelper: 'https://threejs.org/docs/#api/helpers/FaceNormalsHelper',
-      GridHelper: 'https://threejs.org/docs/#api/helpers/GridHelper',
-      PolarGridHelper: 'https://threejs.org/docs/#api/helpers/PolarGridHelper',
-      HemisphereLightHelper: 'https://threejs.org/docs/#api/helpers/HemisphereLightHelper',
-      PlaneHelper: 'https://threejs.org/docs/#api/helpers/PlaneHelper',
-      PointLightHelper: 'https://threejs.org/docs/#api/helpers/PointLightHelper',
-      RectAreaLightHelper: 'https://threejs.org/docs/#api/helpers/RectAreaLightHelper',
-      SkeletonHelper: 'https://threejs.org/docs/#api/helpers/SkeletonHelper',
-      SpotLightHelper: 'https://threejs.org/docs/#api/helpers/SpotLightHelper',
-      VertexNormalsHelper: 'https://threejs.org/docs/#api/helpers/VertexNormalsHelper',
-      AmbientLight: 'https://threejs.org/docs/#api/lights/AmbientLight',
-      DirectionalLight: 'https://threejs.org/docs/#api/lights/DirectionalLight',
-      HemisphereLight: 'https://threejs.org/docs/#api/lights/HemisphereLight',
-      Light: 'https://threejs.org/docs/#api/lights/Light',
-      PointLight: 'https://threejs.org/docs/#api/lights/PointLight',
-      RectAreaLight: 'https://threejs.org/docs/#api/lights/RectAreaLight',
-      SpotLight: 'https://threejs.org/docs/#api/lights/SpotLight',
-      DirectionalLightShadow: 'https://threejs.org/docs/#api/lights/shadows/DirectionalLightShadow',
-      LightShadow: 'https://threejs.org/docs/#api/lights/shadows/LightShadow',
-      SpotLightShadow: 'https://threejs.org/docs/#api/lights/shadows/SpotLightShadow',
-      AnimationLoader: 'https://threejs.org/docs/#api/loaders/AnimationLoader',
-      AudioLoader: 'https://threejs.org/docs/#api/loaders/AudioLoader',
-      BufferGeometryLoader: 'https://threejs.org/docs/#api/loaders/BufferGeometryLoader',
-      Cache: 'https://threejs.org/docs/#api/loaders/Cache',
-      CompressedTextureLoader: 'https://threejs.org/docs/#api/loaders/CompressedTextureLoader',
-      CubeTextureLoader: 'https://threejs.org/docs/#api/loaders/CubeTextureLoader',
-      DataTextureLoader: 'https://threejs.org/docs/#api/loaders/DataTextureLoader',
-      FileLoader: 'https://threejs.org/docs/#api/loaders/FileLoader',
-      FontLoader: 'https://threejs.org/docs/#api/loaders/FontLoader',
-      ImageBitmapLoader: 'https://threejs.org/docs/#api/loaders/ImageBitmapLoader',
-      ImageLoader: 'https://threejs.org/docs/#api/loaders/ImageLoader',
-      JSONLoader: 'https://threejs.org/docs/#api/loaders/JSONLoader',
-      Loader: 'https://threejs.org/docs/#api/loaders/Loader',
-      LoaderUtils: 'https://threejs.org/docs/#api/loaders/LoaderUtils',
-      MaterialLoader: 'https://threejs.org/docs/#api/loaders/MaterialLoader',
-      ObjectLoader: 'https://threejs.org/docs/#api/loaders/ObjectLoader',
-      TextureLoader: 'https://threejs.org/docs/#api/loaders/TextureLoader',
-      DefaultLoadingManager: 'https://threejs.org/docs/#api/loaders/managers/DefaultLoadingManager',
-      LoadingManager: 'https://threejs.org/docs/#api/loaders/managers/LoadingManager',
-      LineBasicMaterial: 'https://threejs.org/docs/#api/materials/LineBasicMaterial',
-      LineDashedMaterial: 'https://threejs.org/docs/#api/materials/LineDashedMaterial',
-      Material: 'https://threejs.org/docs/#api/materials/Material',
-      MeshBasicMaterial: 'https://threejs.org/docs/#api/materials/MeshBasicMaterial',
-      MeshDepthMaterial: 'https://threejs.org/docs/#api/materials/MeshDepthMaterial',
-      MeshLambertMaterial: 'https://threejs.org/docs/#api/materials/MeshLambertMaterial',
-      MeshNormalMaterial: 'https://threejs.org/docs/#api/materials/MeshNormalMaterial',
-      MeshPhongMaterial: 'https://threejs.org/docs/#api/materials/MeshPhongMaterial',
-      MeshPhysicalMaterial: 'https://threejs.org/docs/#api/materials/MeshPhysicalMaterial',
-      MeshStandardMaterial: 'https://threejs.org/docs/#api/materials/MeshStandardMaterial',
-      MeshToonMaterial: 'https://threejs.org/docs/#api/materials/MeshToonMaterial',
-      PointsMaterial: 'https://threejs.org/docs/#api/materials/PointsMaterial',
-      RawShaderMaterial: 'https://threejs.org/docs/#api/materials/RawShaderMaterial',
-      ShaderMaterial: 'https://threejs.org/docs/#api/materials/ShaderMaterial',
-      ShadowMaterial: 'https://threejs.org/docs/#api/materials/ShadowMaterial',
-      SpriteMaterial: 'https://threejs.org/docs/#api/materials/SpriteMaterial',
-      Box2: 'https://threejs.org/docs/#api/math/Box2',
-      Box3: 'https://threejs.org/docs/#api/math/Box3',
-      Color: 'https://threejs.org/docs/#api/math/Color',
-      Cylindrical: 'https://threejs.org/docs/#api/math/Cylindrical',
-      Euler: 'https://threejs.org/docs/#api/math/Euler',
-      Frustum: 'https://threejs.org/docs/#api/math/Frustum',
-      Interpolant: 'https://threejs.org/docs/#api/math/Interpolant',
-      Line3: 'https://threejs.org/docs/#api/math/Line3',
-      Math: 'https://threejs.org/docs/#api/math/Math',
-      Matrix3: 'https://threejs.org/docs/#api/math/Matrix3',
-      Matrix4: 'https://threejs.org/docs/#api/math/Matrix4',
-      Plane: 'https://threejs.org/docs/#api/math/Plane',
-      Quaternion: 'https://threejs.org/docs/#api/math/Quaternion',
-      Ray: 'https://threejs.org/docs/#api/math/Ray',
-      Sphere: 'https://threejs.org/docs/#api/math/Sphere',
-      Spherical: 'https://threejs.org/docs/#api/math/Spherical',
-      Triangle: 'https://threejs.org/docs/#api/math/Triangle',
-      Vector2: 'https://threejs.org/docs/#api/math/Vector2',
-      Vector3: 'https://threejs.org/docs/#api/math/Vector3',
-      Vector4: 'https://threejs.org/docs/#api/math/Vector4',
-      CubicInterpolant: 'https://threejs.org/docs/#api/math/interpolants/CubicInterpolant',
-      DiscreteInterpolant: 'https://threejs.org/docs/#api/math/interpolants/DiscreteInterpolant',
-      LinearInterpolant: 'https://threejs.org/docs/#api/math/interpolants/LinearInterpolant',
-      QuaternionLinearInterpolant: 'https://threejs.org/docs/#api/math/interpolants/QuaternionLinearInterpolant',
-      Bone: 'https://threejs.org/docs/#api/objects/Bone',
-      Group: 'https://threejs.org/docs/#api/objects/Group',
-      Line: 'https://threejs.org/docs/#api/objects/Line',
-      LineLoop: 'https://threejs.org/docs/#api/objects/LineLoop',
-      LineSegments: 'https://threejs.org/docs/#api/objects/LineSegments',
-      LOD: 'https://threejs.org/docs/#api/objects/LOD',
-      Mesh: 'https://threejs.org/docs/#api/objects/Mesh',
-      Points: 'https://threejs.org/docs/#api/objects/Points',
-      Skeleton: 'https://threejs.org/docs/#api/objects/Skeleton',
-      SkinnedMesh: 'https://threejs.org/docs/#api/objects/SkinnedMesh',
-      Sprite: 'https://threejs.org/docs/#api/objects/Sprite',
-      WebGLRenderer: 'https://threejs.org/docs/#api/renderers/WebGLRenderer',
-      WebGLRenderTarget: 'https://threejs.org/docs/#api/renderers/WebGLRenderTarget',
-      WebGLCubeRenderTarget: 'https://threejs.org/docs/#api/renderers/WebGLCubeRenderTarget',
-      ShaderChunk: 'https://threejs.org/docs/#api/renderers/shaders/ShaderChunk',
-      ShaderLib: 'https://threejs.org/docs/#api/renderers/shaders/ShaderLib',
-      UniformsLib: 'https://threejs.org/docs/#api/renderers/shaders/UniformsLib',
-      UniformsUtils: 'https://threejs.org/docs/#api/renderers/shaders/UniformsUtils',
-      Fog: 'https://threejs.org/docs/#api/scenes/Fog',
-      FogExp2: 'https://threejs.org/docs/#api/scenes/FogExp2',
-      Scene: 'https://threejs.org/docs/#api/scenes/Scene',
-      CanvasTexture: 'https://threejs.org/docs/#api/textures/CanvasTexture',
-      CompressedTexture: 'https://threejs.org/docs/#api/textures/CompressedTexture',
-      CubeTexture: 'https://threejs.org/docs/#api/textures/CubeTexture',
-      DataTexture: 'https://threejs.org/docs/#api/textures/DataTexture',
-      DepthTexture: 'https://threejs.org/docs/#api/textures/DepthTexture',
-      Texture: 'https://threejs.org/docs/#api/textures/Texture',
-      VideoTexture: 'https://threejs.org/docs/#api/textures/VideoTexture',
-      CCDIKSolver: 'https://threejs.org/docs/#examples/animations/CCDIKSolver',
-      MMDAnimationHelper: 'https://threejs.org/docs/#examples/animations/MMDAnimationHelper',
-      MMDPhysics: 'https://threejs.org/docs/#examples/animations/MMDPhysics',
-      OrbitControls: 'https://threejs.org/docs/#examples/controls/OrbitControls',
-      ConvexGeometry: 'https://threejs.org/docs/#examples/geometries/ConvexGeometry',
-      DecalGeometry: 'https://threejs.org/docs/#examples/geometries/DecalGeometry',
-      BabylonLoader: 'https://threejs.org/docs/#examples/loaders/BabylonLoader',
-      GLTFLoader: 'https://threejs.org/docs/#examples/loaders/GLTFLoader',
-      MMDLoader: 'https://threejs.org/docs/#examples/loaders/MMDLoader',
-      MTLLoader: 'https://threejs.org/docs/#examples/loaders/MTLLoader',
-      OBJLoader: 'https://threejs.org/docs/#examples/loaders/OBJLoader',
-      OBJLoader2: 'https://threejs.org/docs/#examples/loaders/OBJLoader2',
-      LoaderSupport: 'https://threejs.org/docs/#examples/loaders/LoaderSupport',
-      PCDLoader: 'https://threejs.org/docs/#examples/loaders/PCDLoader',
-      PDBLoader: 'https://threejs.org/docs/#examples/loaders/PDBLoader',
-      SVGLoader: 'https://threejs.org/docs/#examples/loaders/SVGLoader',
-      TGALoader: 'https://threejs.org/docs/#examples/loaders/TGALoader',
-      PRWMLoader: 'https://threejs.org/docs/#examples/loaders/PRWMLoader',
-      Lensflare: 'https://threejs.org/docs/#examples/objects/Lensflare',
-      GLTFExporter: 'https://threejs.org/docs/#examples/exporters/GLTFExporter',
-    });
-
-    function getKeywordLink(keyword) {
-      const dotNdx = keyword.indexOf('.');
-      if (dotNdx) {
-        const before = keyword.substring(0, dotNdx);
-        const link = codeKeywordLinks[before];
-        if (link) {
-          return `${link}.${keyword.substr(dotNdx + 1)}`;
-        }
-      }
-      return keyword.startsWith('THREE.')
-        ? codeKeywordLinks[keyword.substring(6)]
-        : codeKeywordLinks[keyword];
-    }
-
-    $('code').filter(function() {
-      return getKeywordLink(this.textContent) &&
-             this.parentElement.nodeName !== 'A';
-    }).wrap(function() {
-      const a = document.createElement('a');
-      a.href = getKeywordLink(this.textContent);
-      return a;
-    });
-
-    const methodPropertyRE = /^(\w+)\.(\w+)$/;
-    const classRE = /^(\w+)$/;
-    $('a').each(function() {
-      const href = this.getAttribute('href');
-      if (!href) {
-        return;
-      }
-      const m = methodPropertyRE.exec(href);
-      if (m) {
-        const codeKeywordLink = getKeywordLink(m[1]);
-        if (codeKeywordLink) {
-          this.setAttribute('href', `${codeKeywordLink}#${m[2]}`);
-        }
-      } else if (classRE.test(href)) {
-        const codeKeywordLink = getKeywordLink(href);
-        if (codeKeywordLink) {
-          this.setAttribute('href', codeKeywordLink);
-        }
-      }
-    });
-
-    $('pre>code')
-      .unwrap()
-      .replaceWith(function() {
-        return $(`<pre class="prettyprint showlinemods notranslate ${this.className || ''}" translate="no">${this.innerHTML}</pre>`);
-      });
-
-    return dom.serialize();
-  }
-
-  const buildSettings = {
-    outDir: 'out',
-    baseUrl: 'https://threejsfundamentals.org',
-    rootFolder: 'threejs',
-    lessonGrep: 'threejs*.md',
-    siteName: 'ThreeJSFundamentals',
-    siteThumbnail: 'threejsfundamentals.jpg',  // in rootFolder/lessons/resources
-    templatePath: 'build/templates',
-    owner: 'gfxfundamentals',
-    repo: 'threejsfundamentals',
-    thumbnailOptions: {
-      thumbnailBackground: 'threejsfundamentals-background.jpg',
-      text: [
-        {
-          font: 'bold 100px lesson-font',
-          verticalSpacing: 100,
-          offset: [100, 120],
-          textAlign: 'left',
-          shadowOffset: [15, 15],
-          strokeWidth: 15,
-          textWrapWidth: 1000,
-        },
-        {
-          font: 'bold 60px lesson-font',
-          text: 'threejsfundamentals.org',
-          verticalSpacing: 100,
-          offset: [-100, -90],
-          textAlign: 'right',
-          shadowOffset: [8, 8],
-          strokeWidth: 15,
-          textWrapWidth: 1000,
-          color: 'hsl(340, 100%, 70%)',
-        },
-      ],
-    },
-    postHTMLFn: fixThreeJSLinks,
-  };
-
-  // just the hackiest way to get this working.
-  grunt.registerMultiTask('buildlesson', 'build a lesson', function() {
-    const filenames = new Set();
-    this.files.forEach((files) => {
-      files.src.forEach((filename) => {
-        filenames.add(filename);
-      });
-    });
-    const buildStuff = require('@gfxfundamentals/lesson-builder');
-    const settings = {...buildSettings, filenames};
-    const finish = this.async();
-    buildStuff(settings).finally(finish);
-  });
-
-  grunt.registerTask('buildlessons', function() {
-    const buildStuff = require('@gfxfundamentals/lesson-builder');
-    const finish = this.async();
-    buildStuff(buildSettings).finally(finish);
-  });
-
-  grunt.task.registerMultiTask('fixthreepaths', 'fix three paths', function() {
-    const options = this.options({});
-    const oldVersionRE = new RegExp(`/${options.oldVersionStr}/`, 'g');
-    const newVersionReplacement = `/${options.newVersionStr}/`;
-    this.files.forEach((files) => {
-      files.src.forEach((filename) => {
-        const oldContent = fs.readFileSync(filename, {encoding: 'utf8'});
-        const newContent = oldContent.replace(oldVersionRE, newVersionReplacement);
-        if (oldContent !== newContent) {
-          grunt.log.writeln(`updating ${filename} to ${options.newVersionStr}`);
-          fs.writeFileSync(filename, newContent);
-        }
-      });
-    });
-  });
-
-  grunt.registerTask('bumpthree', function() {
-    const lessonInfo = JSON.parse(fs.readFileSync('package.json', {encoding: 'utf8'}));
-    const oldVersion = lessonInfo.threejsfundamentals.threeVersion;
-    const oldVersionStr = `r${oldVersion}`;
-    const threePath = '../three.js'; //path.dirname(path.dirname(require.resolve('three')));
-    const threeInfo = JSON.parse(fs.readFileSync(path.join(threePath, 'package.json'), {encoding: 'utf8'}));
-    const newVersion = semver.minor(threeInfo.version);
-    const newVersionStr = `r${newVersion}`;
-    const basePath = path.join('threejs', 'resources', 'threejs', newVersionStr);
-    grunt.config.merge({
-      copy: {
-        threejs: {
-          files: [
-            { expand: true, cwd: `${threePath}/build/`, src: 'three.js', dest: `${basePath}/build/`, },
-            { expand: true, cwd: `${threePath}/build/`, src: 'three.min.js', dest: `${basePath}/build/`, },
-            { expand: true, cwd: `${threePath}/build/`, src: 'three.module.js', dest: `${basePath}/build/`, },
-            { expand: true, cwd: `${threePath}/examples/js/`, src: '**', dest: `${basePath}/examples/js/`, },
-            { expand: true, cwd: `${threePath}/examples/jsm/`, src: '**', dest: `${basePath}/examples/jsm/`, },
-          ],
-        },
-      },
-      fixthreepaths: {
-        options: {
-          oldVersionStr,
-          newVersionStr,
-        },
-        src: [
-          'threejs/**/*.html',
-          'threejs/**/*.md',
-          'threejs/**/*.js',
-          '!threejs/resources/threejs/**',
-        ],
-      },
-    });
-
-    lessonInfo.threejsfundamentals.threeVersion = newVersion;
-    fs.writeFileSync('package.json', JSON.stringify(lessonInfo, null, 2));
-    grunt.task.run(['copy:threejs', 'fixthreepaths']);
-  });
-
-  grunt.registerTask('build', ['clean', 'copy:main', 'buildlessons']);
-  grunt.registerTask('buildwatch', ['build', 'watch']);
-
-  grunt.registerTask('default', ['eslint', 'build']);
-};
-

+ 0 - 62
MAINTENANCE.md

@@ -1,62 +0,0 @@
-# MAINTENANCE
-
-Three.js constantly evolves which means these articles will be **out of date*
-if not constantly maintained. Leaving up out of date articles is irresponsible
-because users will come to the site and get bad info that will confuse and 
-frustrate them. Keeping the articles up to date with the latest release of
-three.js is therefore very important.
-
-### Upgrading three.js to the latest version
-
-Clone `three.js` using git in a folder above wherever you checked out threejsfundamentals.
-
-In other words if we were starting from scratch
-
-```bash
-git clone https://github.com/gfxfundamentals/threejsfundamentals.git
-git clone https://github.com/mrdoob/three.js.git
-```
-
-Then checkout the latest release in three.js. Next, run `npm run bumpthree`.
-
-```bash
-# assuming you are in the threejsfundamentals folder
-cd ..
-cd three.js
-git fetch origin master
-git checkout r132   # the release you want
-cd ../threejsfundamentals
-npm run bumpthree
-```
-
-This will copy the relevant files from three.js to
-`threejs/resources/threejs/<release>` and attempt to update
-all references in the articles and examples to point to the
-new release.
-
-After that, check the [migration guide](https://github.com/mrdoob/three.js/wiki/Migration-Guide)
-for the things that need to be changed.
-
-### Examples of things that were changed or need to be changed
-
-* The article on `Geometry` had to be removed and the article on `BufferGeometry` updated because
-  `Geometry` was removed. Sadly it was a nice example of building a heightmap but I didn't have
-  time to re-write it as a different article.
-
-* The 3D LUT article should be deleted as there is now an official 3D LUT solution in the three.js examples
-
-* The article on how to fix the bugs in the WebGL Globe by using morph targets needs to be fixed
-  as how morph targets work has changed
-
-* rAF loops should be changed to `Renderer.setAnimationLoop`
-
-* `TextGeometry` needs to be removed or changed in the primitives article as is no longer part of core three.js
-
-* `ParametricGeometry` needs to be removed or changed in the primitives article as is no longer part of core three.js
-
-* lots of minor changes, for example function names changing, functions getting deprecated, parameters changing,
-  default values changing and breaking things, import statements changing, etc...
-
-* project organization changing (the npm version of changed making it no longer useful for this project)
-
-* Significant changes for WebGPU

+ 0 - 31
build/templates/analytics.template

@@ -1,31 +0,0 @@
-<script>
-(function() {
-  if (window.location.hostname.indexOf("threejsfundamentals.org") < 0) {
-      return;
-  }
-
-  function addScript(src, fn) {
-    const script = document.createElement('script');
-    const firstScript = document.getElementsByTagName('script')[0];
-    script.async = true;
-    script.defer = true;
-    script.type = type || 'javascript';
-    if (fn) {
-      script.addEventListener('load', fn);
-    }
-    script.src = src;
-    firstScript.parentNode.insertBefore(script, firstScript);
-  }
-
-  // can't do this because it would eat contexts
-  //addScript('//gpustats.org/stats.js', 'module');
-  addScript('https://www.googletagmanager.com/gtag/js?id=UA-120733518-1', 'javascript', () => {
-    window.dataLayer = window.dataLayer || [];
-    function gtag(){dataLayer.push(arguments);}
-    gtag('js', new Date());
-
-    gtag('config', 'UA-120733518-1');
-  });
-}());
-</script>
-

+ 0 - 9
build/templates/diagram.template

@@ -1,9 +0,0 @@
-<div class="threejs_diagram_container">
-  <iframe class="threejs_diagram {{className}}" style="width: {{width}}px; height: {{height}}px;" src="{{{examplePath}}}{{{url}}}"></iframe>
-  {{#caption}}
-  <div class="threejs_center">{{{../caption}}}</div>
-  {{/caption}}
-  {{^caption}}
-  {{/caption}}
-</div>
-

+ 0 - 5
build/templates/example.template

@@ -1,5 +0,0 @@
-<div translate="no" class="threejs_example_container notranslate">
-  <div><iframe class="threejs_example notranslate" translate="no" style="{{width}} {{height}}" src="/threejs/resources/editor.html?url={{{examplePath}}}{{{encodedUrl}}}{{{params}}}"></iframe></div>
-  <a class="threejs_center" href="{{{examplePath}}}{{{url}}}" target="_blank">{{{caption}}}</a>
-</div>
-

+ 0 - 11
build/templates/header.template

@@ -1,11 +0,0 @@
-<div class="threejs_navbar">
-  <div>
-    {{{include "build/templates/languages.template"}}}
-    <a href="#toc">{{langInfo.toc}}</a>
-  </div>
-</div>
-<div class="threejs_header">
-  <h1><a href="{{langInfo.home}}">threejsfundamentals.org</a></h1>
-{{{include "build/templates/repobanner.template"}}}
-</div>
-

+ 0 - 9
build/templates/image.template

@@ -1,9 +0,0 @@
-<div class="threejs_image {{className}}">
-  <img class="" src="{{{examplePath}}}{{{url}}}">
-  {{#caption}}
-  <div class="threejs_center">{{{../caption}}}</div>
-  {{/caption}}
-  {{^caption}}
-  {{/caption}}
-</div>
-

+ 0 - 123
build/templates/index.template

@@ -1,123 +0,0 @@
-<!DOCTYPE html>
-<!-- this file is auto-generated from {{src_file_name}}. Do not edited directly -->
-<!--
-Copyright 2018, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-*   Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-*   Redistributions in binary form must reproduce the above
-    copyright notice, this list of conditions and the following disclaimer
-    in the documentation and/or other materials provided with the
-    distribution.
-
-*   Neither the name of Google Inc. nor the names of their
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-<html lang="{{langInfo.langCode}}">
-<head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-
-<meta name="description" content="Three.js tutorials and solutions">
-<meta name="keywords" content="webgl graphics three.js">
-<meta name="thumbnail" content="https://threejsfundamentals.org/threejs/lessons/resources/threejsfundamentals.jpg">
-
-<meta property="og:title" content="{{title}}">
-<meta property="og:type" content="website">
-<meta property="og:image" content="https://threejsfundamentals.org/threejs/lessons/resources/threejsfundamentals.jpg">
-<meta property="og:description" content="{{templateOptions.description}}">
-<meta property="og:url" content="https://threejsfundamentals.org">
-
-<meta name="twitter:card" content="summary_large_image">
-<meta name="twitter:site" content="@greggman">
-<meta name="twitter:creator" content="@greggman">
-<meta name="twitter:domain" content="threejsfundamentals.org">
-<meta name="twitter:title" content="threejsfundamentals.org">
-<meta name="twitter:url" content="https://threejsfundamentals.org">
-<meta name="twitter:description" content="{{templateOptions.description}}">
-<meta name="twitter:image:src" content="https://threejsfundamentals.org/threejs/lessons/resources/threejsfundamentals.jpg">
-
-<title>{{title}}</title>
-
-{{{include "build/templates/langs-meta.template"}}}
-
-<link rel="alternate" type="application/atom+xml" title="threejs fundamentals" href="https://threejsfundamentals.org/atom.xml">
-<script type="application/ld+json">
-{
-  "@context":"https://schema.org",
-  "@type":"ItemList",
-  "itemListElement":
-  {{{langInfo.carousel}}}
-}
-</script>
-
-
-<link href="/threejs/lessons/resources/threejsfundamentals-icon.png" rel="shortcut icon" type="image/png">
-<link rel="apple-touch-icon" href="/threejs/lessons/resources/threejsfundamentals-icon.png">
-<link rel="icon" href="/threejs/lessons/resources/threejsfundamentals-icon.png">
-
-<link rel="stylesheet" href="/threejs/lessons/lang.css">
-{{#ifexists filename="/threejs/lessons/{{langCode}}/lang.css" langCode=langInfo.baseDirname}}
-<link rel="stylesheet" href="/threejs/lessons/{{langInfo.baseDirname}}/lang.css">
-{{/ifexists}}
-<link rel="stylesheet" href="/threejs/lessons/resources/lesson.css">
-<link rel="stylesheet" href="/threejs/lessons/resources/index.css">
-</head>
-<body>
-<div id="canvas">
-</div>
-<div class="threejs_navbar">
-  <div>
-    {{{include "build/templates/languages.template"}}}
-  </div>
-</div>
-<div class="container">
-  <div class="lesson">
-    <div class="lesson-main">
-      <h1>{{title}} <span class="rss"><a href="http://threejsfundamentals.org/atom.xml"><img src="/threejs/lessons/resources/rss-icon.svg" alt="rss"/></a></span></h1>
-      <div class="home-lang">
-        {{{include "build/templates/languages.template"}}}
-      </div>
-      {{{content}}}
-      <div>
-      flamingo by: <a href="http://mirada.com/">mirada</a> from <a href="https://github.com/dataarts/3-dreams-of-black">3 Dreams of Black</a>
-      </div>
-    </div>
-  </div>
-</div>
-{{{include "build/templates/repobanner.template"}}}
-<iframe class="background" src="/threejs/background.html"></iframe>
-</body>
-<script>
-const settings = {
-  contribTemplate: {{{stringify names="langInfo.contribTemplate,originalLangInfo.contribTemplate"}}},
-  owner: {{{stringify names="settings.owner"}}},
-  repo: {{{stringify names="settings.repo"}}},
-};
-</script>
-<script src="/contributors.js"></script>
-<script src="/3rdparty/jquery-3.3.1.slim.min.js"></script>
-<script src="/threejs/lessons/resources/lesson.js"></script>
-{{{include "build/templates/analytics.template" }}}
-</html>
-
-

+ 0 - 2
build/templates/lang-select.template

@@ -1,2 +0,0 @@
-<option value="{{lang}}">{{language}}</option>
-

+ 0 - 5
build/templates/langs-meta.template

@@ -1,5 +0,0 @@
-{{#each langs}}
-  <link rel="alternate" hreflang="{{lang}}" href="https://webglfundamentals.org{{url}}">
-{{/each}}
-
-

+ 0 - 6
build/templates/languages.template

@@ -1,6 +0,0 @@
-<select class="language">
-  {{#each langs}}
-    <option value="{{url}}" {{{selected key="url" value="relUrl" re="index\.html" sub="" }}}>{{language}}</a>
-  {{/each}}
-</select>
-

+ 0 - 164
build/templates/lesson.template

@@ -1,164 +0,0 @@
-<!DOCTYPE html>
-<!-- this file is auto-generated from {{src_file_name}}. Do not edited directly -->
-<!--
-Copyright 2018, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-*   Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-*   Redistributions in binary form must reproduce the above
-    copyright notice, this list of conditions and the following disclaimer
-    in the documentation and/or other materials provided with the
-    distribution.
-
-*   Neither the name of Google Inc. nor the names of their
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-<html lang="{{langInfo.langCode}}">
-<head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-
-<meta name="description" content="{{description}}">
-<meta name="keywords" content="webgl graphics three.js">
-<meta name="thumbnail" content="{{screenshot}}">
-
-<meta property="og:title" content="{{title}}">
-<meta property="og:type" content="website">
-<meta property="og:image" content="{{screenshot}}">
-<meta property="og:description" content="{{description}}">
-<meta property="og:url" content="{{url}}">
-
-<meta name="twitter:card" content="summary_large_image">
-<meta name="twitter:site" content="@greggman">
-<meta name="twitter:creator" content="@greggman">
-<meta name="twitter:domain" content="threejsfundamentals.org">
-<meta name="twitter:title" content="{{title}}">
-<meta name="twitter:url" content="{{url}}">
-<meta name="twitter:description" content="{{description}}">
-<meta name="twitter:image:src" content="{{screenshot}}">
-
-{{{include "build/templates/langs-meta.template"}}}
-
-<script type="application/ld+json">
-{
-  "@context":"https://schema.org",
-  "@graph":[
-    {
-      "@type":"WebSite",
-      "@id":"https://threejsfundamentals.org/#website",
-      "url":"https://threejsfundamentals.org/",
-      "name":"ThreejsFundamentals"
-    },
-    {
-      "@type":"ImageObject",
-      "@id":"{{url}}#primaryimage",
-      "url":"{{screenshot}}",
-      "width":{{screenshotSize.width}},
-      "height":{{screenshotSize.height}}
-    },
-    {
-      "@type":"WebPage",
-      "@id":"{{url}}#webpage",
-      "url":"{{url}}",
-      "inLanguage":"{{langInfo.langCode}}",
-      "name":"{{title}}",
-      "keywords":"webgl graphics three.js programming",
-      "isPartOf":{
-        "@id":"https://threejsfundamentals.org/#website"
-      },
-      "primaryImageOfPage":{
-        "@id":"{{url}}#primaryimage"
-      }
-    }
-  ]
-}
-</script>
-
-<title>{{title}}</title>
-<link href="/threejs/lessons/resources/threejsfundamentals-icon.png" rel="shortcut icon" type="image/png">
-<link rel="apple-touch-icon" href="/threejs/lessons/resources/threejsfundamentals-icon.png">
-<link rel="icon" href="/threejs/lessons/resources/threejsfundamentals-icon.png">
-
-<link rel="stylesheet" href="/threejs/lessons/lang.css">
-{{#ifexists filename="/threejs/lessons/{{langCode}}/lang.css" langCode=langInfo.baseDirname}}
-<link rel="stylesheet" href="/threejs/lessons/{{langInfo.baseDirname}}/lang.css">
-{{/ifexists}}
-<link rel="stylesheet" href="/threejs/lessons/resources/lesson.css">
-</head>
-<body>
-{{{include "build/templates/header.template"}}}
-<div class="container">
-  <div class="lesson-title">
-    <h1>{{title}}</h1>
-  </div>
-  <div class="lesson">
-    <div class="lesson-main">
-      {{{content}}}
-    </div>
-    <div class="lesson-sidebar">
-        {{{include "build/templates/languages.template"}}}
-        <div id="toc">
-          {{{include "toc.html" filename="toc"}}}
-        </div>
-    </div>
-    <div class="lesson-comments">
-        {{{langInfo.commentSectionHeader}}}
-
-        <div id="disqus_thread"></div>
-        <script type="text/javascript">
-            /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
-            var disqus_shortname = 'threejsfundamentals'; // required: replace example with your forum shortname
-            var disqus_identifier = '{{title}}';
-            var disqus_title = '{{title}}';
-
-            /* * * DON'T EDIT BELOW THIS LINE * * */
-            (function() {
-                if (window.location.hostname.indexOf("threejsfundamentals.org") < 0) {
-                    return;
-                }
-                var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
-                dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
-                (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
-            })();
-        </script>
-        <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
-        <a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
-    </div>
-  </div>
-</div>
-</body>
-<script>
-const settings = {
-  contribTemplate: {{{stringify names="langInfo.contribTemplate,originalLangInfo.contribTemplate"}}},
-  owner: {{{stringify names="settings.owner"}}},
-  repo: {{{stringify names="settings.repo"}}},
-};
-</script>
-<script src="/contributors.js"></script>
-<script src="/3rdparty/jquery-3.3.1.slim.min.js"></script>
-<script src="/threejs/lessons/resources/prettify.js"></script>
-<script src="/threejs/lessons/resources/lesson.js"></script>
-{{{include "build/templates/analytics.template" }}}
-</html>
-
-
-

+ 0 - 83
build/templates/missing.template

@@ -1,83 +0,0 @@
-<!DOCTYPE html>
-<!-- this file is auto-generated from {{src_file_name}}. Do not edited directly -->
-<!--
-Copyright 2018, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above
-      copyright notice, this list of conditions and the following disclaimer
-      in the documentation and/or other materials provided with the
-      distribution.
-
-    * Neither the name of Google Inc. nor the names of their
-      contributors may be used to endorse or promote products derived from
-      this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-<html lang="{{langInfo.langCode}}">
-<head>
-<meta charset="utf-8">
-<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
-<meta property="og:title" content="{{title}}" />
-<meta property="og:type" content="website" />
-<meta property="og:image" content="{{screenshot}}" />
-<meta property="og:description" content="{{description}}" />
-<meta property="og:url" content="{{url}}" />
-
-<meta name="twitter:card" content="summary_large_image" />
-<meta name="twitter:site" content="@greggman" />
-<meta name="twitter:creator" content="@greggman" />
-<meta name="twitter:domain" content="threejsfundamentals.org" />
-<meta name="twitter:title" content="{{title}}" />
-<meta name="twitter:url" content="{{url}}" />
-<meta name="twitter:description" content="{{description}}" />
-<meta name="twitter:image:src" content="{{screenshot}}" />
-
-
-<title>{{title}}</title>
-<link href="/threejs/lessons/resources/threejsfundamentals-icon.png" rel="shortcut icon" type="image/png">
-<link rel="stylesheet" href="/threejs/lessons/resources/lesson.css" />
-</head>
-<body>
-{{{include "build/templates/header.template"}}}
-<div class="container">
-  <div class="lesson-title">
-    <h1>{{title}}</h1>
-  </div>
-  <div class="lesson">
-    <div class="lesson-main">
-      {{{content}}}
-    </div>
-    <div class="lesson-sidebar">
-        {{{include "build/templates/languages.template"}}}
-        {{{include "toc.html" filename="toc"}}}
-    </div>
-  </div>
-</div>
-</body>
-<script src="/3rdparty/jquery-3.3.1.slim.min.js"></script>
-<script src="/threejs/lessons/resources/prettify.js"></script>
-<script src="/threejs/lessons/resources/lesson.js"></script>
-{{{include "build/templates/analytics.template" }}}
-</html>
-
-
-

+ 0 - 7
build/templates/octocat-icon.svg

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg width="100%" height="100%" viewBox="0 0 136 133" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
-    <g transform="matrix(3.92891,0,0,3.92891,67.867,129.125)">
-        <path d="M0,-31.904C-8.995,-31.904 -16.288,-24.611 -16.288,-15.614C-16.288,-8.417 -11.621,-2.312 -5.148,-0.157C-4.333,-0.008 -4.036,-0.511 -4.036,-0.943C-4.036,-1.329 -4.05,-2.354 -4.058,-3.713C-8.589,-2.729 -9.545,-5.897 -9.545,-5.897C-10.286,-7.779 -11.354,-8.28 -11.354,-8.28C-12.833,-9.29 -11.242,-9.27 -11.242,-9.27C-9.607,-9.155 -8.747,-7.591 -8.747,-7.591C-7.294,-5.102 -4.934,-5.821 -4.006,-6.238C-3.858,-7.29 -3.438,-8.008 -2.972,-8.415C-6.589,-8.826 -10.392,-10.224 -10.392,-16.466C-10.392,-18.244 -9.757,-19.698 -8.715,-20.837C-8.883,-21.249 -9.442,-22.905 -8.556,-25.148C-8.556,-25.148 -7.188,-25.586 -4.076,-23.478C-2.777,-23.84 -1.383,-24.02 0.002,-24.026C1.385,-24.02 2.779,-23.84 4.08,-23.478C7.19,-25.586 8.555,-25.148 8.555,-25.148C9.444,-22.905 8.885,-21.249 8.717,-20.837C9.761,-19.698 10.392,-18.244 10.392,-16.466C10.392,-10.208 6.583,-8.831 2.954,-8.428C3.539,-7.925 4.06,-6.931 4.06,-5.411C4.06,-3.234 4.04,-1.477 4.04,-0.943C4.04,-0.507 4.333,0 5.16,-0.159C11.628,-2.318 16.291,-8.419 16.291,-15.614C16.291,-24.611 8.997,-31.904 0,-31.904" style="fill:white;"/>
-    </g>
-</svg>

+ 0 - 92
build/templates/repobanner.template

@@ -1,92 +0,0 @@
-<style>
-#forkongithub>div {
-    background: #000;
-    color: #fff;
-    font-family: arial,sans-serif;
-    text-align: center;
-    font-weight: bold;
-    padding: 5px 40px;
-    font-size: 0.9rem;
-    line-height: 1.3rem;
-    position: relative;
-    transition: 0.5s;
-    display: block;
-    width: 400px;
-    position: absolute;
-    top: 0;
-    right: 0;
-    transform: translateX(200px) rotate(45deg) translate(10px,70px);
-    box-shadow: 4px 4px 10px rgba(0,0,0,0.8);
-    pointer-events: auto;
-}
-#forkongithub a {
-  text-decoration: none;
-  color: #fff;
-}
-#forkongithub>div:hover {
-    background: #c11;
-    color: #fff;
-}
-#forkongithub .contributors {
-  font-size: 0.75rem;
-  background: rgba(255,255,255,0.2);
-  line-height: 1.2;
-  padding: 0.1em;
-}
-#forkongithub>div::before,#forkongithub>div::after {
-    content: "";
-    width: 100%;
-    display: block;
-    position: absolute;
-    top: 1px;
-    left: 0;
-    height: 1px;
-    background: #fff;
-}
-#forkongithub>div::after {
-    bottom: 1px;
-    top: auto;
-}
-
-#forkongithub{
-    z-index: 9999;
-    /* needed for firefox */
-    overflow: hidden;
-    width: 300px;
-    height: 300px;
-    position: absolute;
-    right: 0;
-    top: 0;
-    pointer-events: none;
-}
-#forkongithub svg{
-  width: 1em;
-  height: 1em;
-  vertical-align: middle;
-}
-#forkongithub img {
-  width: 1em;
-  height: 1em;
-  border-radius: 100%;
-  vertical-align: middle;
-}
-
-@media (max-width: 900px) {
-    #forkongithub>div {
-        line-height: 1.2rem;
-    }
-}
-@media (max-width: 700px) {
-  #forkongithub {
-    display: none;
-  }
-}
-@media (max-width: 410px) {
-    #forkongithub>div {
-        font-size: 0.7rem;
-        transform: translateX(150px) rotate(45deg) translate(20px,40px);
-    }
-}
-
-</style>
-<div id="forkongithub"><div><div><a href="https://github.com/gfxfundamentals/threejsfundamentals">Fix, Fork, Contribute {{{include "build/templates/octocat-icon.svg"}}}</a></div></div></div>

+ 0 - 1
build/templates/warning.template

@@ -1 +0,0 @@
-<div class="warning">{{{msg}}}</div>

+ 0 - 1
contributors.md

@@ -1 +0,0 @@
-<!-- empty -->

+ 0 - 0
threejs/lessons/threejs-align-html-elements-to-3d.md → manual/en/align-html-elements-to-3d.html


+ 0 - 0
threejs/lessons/threejs-backgrounds.md → manual/en/backgrounds.html


+ 0 - 0
threejs/lessons/threejs-billboards.md → manual/en/billboards.html


+ 0 - 0
threejs/lessons/threejs-cameras.md → manual/en/cameras.html


+ 0 - 0
threejs/lessons/threejs-canvas-textures.md → manual/en/canvas-textures.html


+ 0 - 0
threejs/lessons/threejs-cleanup.md → manual/en/cleanup.html


+ 0 - 0
threejs/lessons/fr/threejs-custom-buffergeometry.md → manual/en/custom-buffergeometry.html


+ 0 - 0
threejs/lessons/threejs-custom-geometry.md → manual/en/custom-geometry.html


+ 0 - 0
threejs/lessons/threejs-debugging-glsl.md → manual/en/debugging-glsl.html


+ 0 - 0
threejs/lessons/threejs-debugging-javascript.md → manual/en/debugging-javascript.html


+ 0 - 0
threejs/lessons/threejs-fog.md → manual/en/fog.html


+ 0 - 0
threejs/lessons/threejs-fundamentals.md → manual/en/fundamentals.html


+ 0 - 0
threejs/lessons/threejs-game.md → manual/en/game.html


+ 0 - 0
threejs/lessons/threejs-indexed-textures.md → manual/en/indexed-textures.html


+ 0 - 0
threejs/lessons/threejs-lights.md → manual/en/lights.html


+ 0 - 0
threejs/lessons/threejs-load-gltf.md → manual/en/load-gltf.html


+ 0 - 0
threejs/lessons/threejs-load-obj.md → manual/en/load-obj.html


+ 0 - 0
threejs/lessons/threejs-material-table.md → manual/en/material-table.html


+ 0 - 0
threejs/lessons/threejs-materials.md → manual/en/materials.html


+ 0 - 0
threejs/lessons/threejs-multiple-scenes.md → manual/en/multiple-scenes.html


+ 0 - 0
threejs/lessons/threejs-offscreencanvas.md → manual/en/offscreencanvas.html


+ 0 - 0
threejs/lessons/threejs-optimize-lots-of-objects-animated.md → manual/en/optimize-lots-of-objects-animated.html


+ 0 - 0
threejs/lessons/threejs-optimize-lots-of-objects.md → manual/en/optimize-lots-of-objects.html


+ 0 - 0
threejs/lessons/threejs-picking.md → manual/en/picking.html


+ 0 - 0
threejs/lessons/threejs-post-processing-3dlut.md → manual/en/post-processing-3dlut.html


+ 0 - 0
threejs/lessons/threejs-post-processing.md → manual/en/post-processing.html


+ 0 - 0
threejs/lessons/threejs-prerequisites.md → manual/en/prerequisites.html


+ 0 - 0
threejs/lessons/threejs-primitives.md → manual/en/primitives.html


+ 0 - 0
threejs/lessons/threejs-rendering-on-demand.md → manual/en/rendering-on-demand.html


+ 0 - 0
threejs/lessons/fr/threejs-rendertargets.md → manual/en/rendertargets.html


+ 0 - 0
threejs/lessons/threejs-responsive.md → manual/en/responsive.html


+ 0 - 0
threejs/lessons/threejs-scenegraph.md → manual/en/scenegraph.html


+ 0 - 0
threejs/lessons/threejs-setup.md → manual/en/setup.html


+ 0 - 0
threejs/lessons/threejs-shadertoy.md → manual/en/shadertoy.html


+ 0 - 0
threejs/lessons/threejs-shadows.md → manual/en/shadows.html


+ 0 - 0
threejs/lessons/threejs-textures.md → manual/en/textures.html


+ 0 - 0
threejs/lessons/threejs-tips.md → manual/en/tips.html


+ 0 - 0
threejs/lessons/threejs-transparency.md → manual/en/transparency.html


+ 0 - 0
threejs/lessons/threejs-voxel-geometry.md → manual/en/voxel-geometry.html


+ 0 - 0
threejs/lessons/threejs-webvr-look-to-select.md → manual/en/webxr-look-to-select.html


+ 0 - 0
threejs/lessons/threejs-webvr-point-to-select.md → manual/en/webxr-point-to-select.html


+ 0 - 0
threejs/lessons/threejs-webvr.md → manual/en/webxr.html


+ 0 - 0
threejs/3dlut-base-cube-maker.html → manual/examples/3dlut-base-cube-maker.html


+ 0 - 0
threejs/threejs-align-html-elements-to-3d-globe-too-many-labels.html → manual/examples/align-html-elements-to-3d-globe-too-many-labels.html


+ 0 - 0
threejs/threejs-align-html-elements-to-3d-globe.html → manual/examples/align-html-elements-to-3d-globe.html


+ 0 - 0
threejs/threejs-align-html-to-3d-w-hiding.html → manual/examples/align-html-to-3d-w-hiding.html


+ 0 - 0
threejs/threejs-align-html-to-3d-w-sorting.html → manual/examples/align-html-to-3d-w-sorting.html


+ 0 - 0
threejs/threejs-align-html-to-3d.html → manual/examples/align-html-to-3d.html


+ 0 - 0
threejs/threejs-background-css.html → manual/examples/background-css.html


+ 0 - 0
threejs/threejs-background-cubemap.html → manual/examples/background-cubemap.html


+ 0 - 0
threejs/threejs-background-equirectangularmap.html → manual/examples/background-equirectangularmap.html


+ 0 - 0
threejs/threejs-background-scene-background-fixed-aspect.html → manual/examples/background-scene-background-fixed-aspect.html


+ 0 - 0
threejs/threejs-background-scene-background.html → manual/examples/background-scene-background.html


+ 0 - 0
threejs/threejs-background-separate-scene-bad-aspect.html → manual/examples/background-separate-scene-bad-aspect.html


+ 0 - 0
threejs/threejs-background-separate-scene.html → manual/examples/background-separate-scene.html


+ 0 - 0
threejs/background-v01.html → manual/examples/background-v01.html


+ 0 - 0
threejs/background.html → manual/examples/background.html


+ 0 - 0
threejs/threejs-billboard-labels-w-sprites-adjust-height.html → manual/examples/billboard-labels-w-sprites-adjust-height.html


+ 0 - 0
threejs/threejs-billboard-labels-w-sprites.html → manual/examples/billboard-labels-w-sprites.html


+ 0 - 0
threejs/threejs-billboard-trees-no-billboards.html → manual/examples/billboard-trees-no-billboards.html


+ 0 - 0
threejs/threejs-billboard-trees-static-billboards.html → manual/examples/billboard-trees-static-billboards.html


+ 0 - 0
threejs/threejs-cameras-logarithmic-depth-buffer.html → manual/examples/cameras-logarithmic-depth-buffer.html


+ 0 - 0
threejs/threejs-cameras-orthographic-2-scenes.html → manual/examples/cameras-orthographic-2-scenes.html


+ 0 - 0
threejs/threejs-cameras-orthographic-canvas-top-left-origin.html → manual/examples/cameras-orthographic-canvas-top-left-origin.html


+ 0 - 0
threejs/threejs-cameras-perspective-2-scenes.html → manual/examples/cameras-perspective-2-scenes.html


+ 0 - 0
threejs/threejs-cameras-perspective.html → manual/examples/cameras-perspective.html


+ 0 - 0
threejs/threejs-cameras-z-fighting.html → manual/examples/cameras-z-fighting.html


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels