Рендерер WebGL отображает ваши великолепно выполненные сцены, используя WebGL.
parameters — (необязательный) объект со свойствами, определяющими поведение рендерера.
Конструктор также не принимает никаких параметров. Во всех случаях он будет принимать разумные значения по умолчанию
если параметры отсутствуют. Ниже перечислены допустимые параметры:
canvas - canvas
где рендерер выводит свои результат.
Это соответствует приведенному ниже свойству domElement.
Если не передать этот параметр, будет создан новый элемент canvas.
context — Может быть использован для присоединения рендерера к существующему
RenderingContext.
По умолчанию null.
precision — Точность шейдера. Может быть "highp ", "mediump " или "lowp ".
По умолчанию "highp ", если поддерживается устройством. Смотрите заметку "Things to Avoid"
здесь.
alpha — содержит ли canvas альфа-буфер (прозрачность) или нет.
По умолчанию false.
premultipliedAlpha — будет ли рендерер считать, что цвета имеют
premultiplied alpha.
По умолчанию true.
antialias — выполнять ли сглаживание. По умолчанию false.
stencil — имеет ли буфер отрисовки
stencil buffer как минимум 8 бит.
По умолчанию true.
preserveDrawingBuffer — сохранять ли буферы до тех пор, пока они не будут очищены вручную
или перезаписаны По умолчанию false.
powerPreference — Предоставляет агенту пользователя подсказку, указывающую, какая конфигурация GPU подходит для данного контекста WebGL.
Может быть "high-performance", "low-power" или "default". По умолчанию "default".
См. WebGL spec для подробностей.
failIfMajorPerformanceCaveat — будет ли создание рендерера завершено при обнаружении низкой производительности. По умолчанию false.
См. WebGL spec для подробностей.
depth — имеет ли буфер отрисовки иметь
depth buffer как минимум 16 бит.
По умолчанию true.
logarithmicDepthBuffer - использовать ли логарифмический буфер глубины. может потребоваться при работе с большими различиями в масштабе в одной сцене.
Обратите внимание, что эта настройка использует gl_FragDepth, который отключает оптимизацию Early Fragment Test
и может привести к снижению производительности.
По умолчанию false.
Определяет, должен ли рендерер автоматически очищать свой вывод перед рендерингом кадра.
Если autoClear равно true, определяет, должен ли рендерер очищать буфер цвета. По умолчанию true.
Если autoClear равно true, определяет, должен ли рендерер очищать буфер глубины. По умолчанию true.
Если autoClear равно true, определяет, должен ли рендерер очищать буфер стенсила. По умолчанию true.
Если checkShaderErrors равно true, определяет, проверяются ли программы шейдеров материалов на наличие ошибок в процессе компиляции и компоновки. Может быть полезно отключить эту проверку во время разработки для повышения производительности. Настоятельно рекомендуется включать эти проверки во время разработки. Если шейдер не компилируется и не связывается - он не будет работать и связанный с ним материал не будет рендериться. По умолчанию true.
Объект, содержащий подробную информацию о возможностях текущего RenderingContext.
- floatFragmentTextures: поддерживает ли контекст расширение OES_texture_float.
Согласно WebGLStats, по состоянию на февраль 2016 года более 95% устройств с поддержкой WebGL поддерживают эту функцию.
- floatVertexTextures: true если floatFragmentTextures и vertexTextures оба true.
- getMaxAnisotropy(): Возвращает максимальную доступную анизотропию.
- getMaxPrecision(): Возвращает максимальную доступную точность для вершинных и фрагментных шейдеров.
- isWebGL2: true если используемый контекст является объектом WebGL2RenderingContext.
- logarithmicDepthBuffer: true если logarithmicDepthBuffer было установлено true в конструкторе и контекст поддерживает расширениеEXT_frag_depth.
Согласно WebGLStats, по состоянию на февраль 2016 года около 66% устройств с поддержкой WebGL поддерживают эту функцию.
- maxAttributes: Значение gl.MAX_VERTEX_ATTRIBS.
- maxCubemapSize: Значение gl.MAX_CUBE_MAP_TEXTURE_SIZE.
Максимальная высота * ширина текстур карты куба, которые может использовать шейдер.
- maxFragmentUniforms: Значение gl.MAX_FRAGMENT_UNIFORM_VECTORS.
Количество uniform, которые может использовать фрагментный шейдер.
- maxTextureSize: Значение gl.MAX_TEXTURE_SIZE.
Максимальная высота * ширина текстуры, которую использует шейдер.
- maxTextures: Значение gl.MAX_TEXTURE_IMAGE_UNITS.
Максимальное количество текстур, которое может быть использовано шейдером.
- maxVaryings: Значение gl.MAX_VARYING_VECTORS.
Количество изменяющихся векторов, которые могут использоваться шейдерами.
- maxVertexTextures: Значение gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS.
Количество текстур, которые могут быть использованы в вершинном шейдере.
- maxVertexUniforms: Значение gl.MAX_VERTEX_UNIFORM_VECTORS.
Максимальное количество форм, которое может быть использовано в вершинном шейдере.
- precision: The shader precision currently being used by the renderer.
- vertexTextures: true если # .maxVertexTextures : Integerбольше чем 0 (т.е. можно использовать вершинные текстуры).
Определяемые пользователем плоскости сечения, заданные как объекты v3d.Plane в мировом пространстве. Эти плоскости применяются глобально.Точки в пространстве, чье скалярное произведение с плоскостью отрицательно, отсекаются. По умолчанию [].
canvas где рендерер рисует свой вывод.
Он автоматически создается рендерером в конструкторе (если он еще не создан); вам просто нужно добавить его на вашу страницу, как показано ниже:
document.body.appendChild(renderer.domElement);
Обертка для метода .extensions.get, используемого для проверки поддержки различных расширений WebGL.
По умолчанию 2.
Определяет выходную кодировку рендерера. По умолчанию v3d.LinearEncoding.
Если цель рендеринга была установлена с помощью .setRenderTarget, то вместо нее будет использоваться renderTarget.texture.encoding.
Подробности о других форматах смотрите на странице texture constants.
Объект, содержащий ряд статистических сведений о памяти графической карты и процессе рендеринга. Полезен для отладки или просто как дополнительная информация. Объект содержит следующие поля:
По умолчанию эти данные сбрасываются при каждом вызове рендеринга, но при наличии нескольких проходов рендеринга на кадр (например, при использовании постобработки) может быть предпочтительнее сбрасывать данные с помощью пользовательского шаблона. Сначала установите autoReset в значение false.
renderer.info.autoReset = false;
Вызывайте reset() каждый раз, когда вы закончили рендеринг одного кадра.
renderer.info.reset();
Определяет, соблюдает ли рендерер плоскости обтравки на уровне объекта. По умолчанию false.
По умолчанию 12. Максимальное количество целей MorphTargets, допустимое в шейдере. Следует помнить, что стандартные материалы допускают только 12 целей MorphTargets.
По умолчанию - 6. Максимальное количество MorphNormals, допустимое в шейдере. Следует помнить, что стандартные материалы допускают только 6 MorphNormals.
Использовать ли режим физически корректного освещения. По умолчанию false.
Используется внутри рендерера для отслеживания различных свойств саб-объектов.
Используется внутренне для обработки упорядочивания рендеринга объектов сцены.
Содержит ссылку на карту теней, если она используется.
Если задано, используйте карты теней в сцене. По умолчанию false.
Включает автоматическое обновление теней в сцене. По умолчанию true.
Если вам не требуется динамическое освещение/тени, вы можете установить значение false при инстанцировании рендерера.
Если установлено значение true, карты теней в сцене будут обновлены в следующем вызове render. По умолчанию false.
Если вы отключили автоматическое обновление карт теней (shadowMap.autoUpdate = false), вам нужно установить значение true и затем выполнить вызов рендеринга для обновления теней в вашей сцене.
Определяет тип карты теней (нефильтрованная, фильтрация с процентным приближением, фильтрация с процентным приближением с билинейной фильтрацией в шейдере, экспоненциальное отображение теней с гауссовым размытием).
Варианты: v3d.BasicShadowMap, v3d.PCFShadowMap (по умолчанию), v3d.PCFSoftShadowMap, v3d.ESMShadowMap, v3d.PCFShadowMapPoissonDisk. Подробности смотрите в Renderer constants.
Определяет, должен ли рендерер сортировать объекты. По умолчанию true.
Примечание: Сортировка используется для того, чтобы попытаться правильно отобразить объекты, имеющие некоторую степень прозрачности. По определению, сортировка объектов может работать не во всех случаях. В зависимости от потребностей приложения, может потребоваться отключить сортировку и использовать другие методы для работы с рендерингом прозрачности, например, вручную определять порядок рендеринга каждого объекта.
Содержит функции для установки различных свойств состояния WebGLRenderer.context.
По умолчанию NoToneMapping. Другие варианты смотрите в Renderer constants.
Уровень экспозиции тонального маппинга. По умолчанию 1.
Предоставляет доступ к связанному с WebXR interface рендереру.
Дает команду рендереру очистить буфер(ы) цвета, глубины или трафаретного рисунка. Этот метод инициализирует буфер цвета текущим значением clear color.
Аргументы по умолчанию имеют значение true.
Очистить цветовой буфер. Эквивалентно вызову .clear(true, false, false).
Очистить буфер глубины. Эквивалентно вызову .clear(false, true, false).
Очистить буферы стенсилов. Эквивалентно вызову .clear(false, false, true).
Компилирует все материалы в сцене с камерой. Это полезно для предварительной компиляции шейдеров перед первым рендерингом.
Асинхронно компилирует все материалы в сцене с камерой. Это полезно для предварительной компиляции шейдеров перед первым рендерингом. Дополнительная функция progressCb получает параметр percentage.
Копирует пиксели из текущего WebGLFramebuffer в 2D текстуру. Позволяет получить доступ к WebGLRenderingContext.copyTexImage2D.
Копирует все пиксели текстуры в существующую текстуру, начиная с заданной позиции. Позволяет получить доступ к WebGLRenderingContext.texSubImage2D.
Удаление текущего контекста рендеринга.
Используется для проверки поддержки различных расширений и возвращает объект с подробной информацией о расширении, если оно доступно.
Этот метод может проверить наличие следующих расширений:
- WEBGL_depth_texture
- EXT_texture_filter_anisotropic
- WEBGL_compressed_texture_s3tc
- WEBGL_compressed_texture_pvrtc
- WEBGL_compressed_texture_etc1
Имитация потери контекста WebGL. Для этого требуется поддержка расширения WEBGL_lose_context. Согласно WebGLStats, по состоянию на февраль 2016 года 90% устройств с поддержкой WebGL поддерживают его.
Возвращает float с текущей чистой альфой. Диапазон от 0 до 1.
Возвращает экземпляр v3d.Color с текущим цветом прозрачности.
Возвращает текущий контекст WebGL.
Возвращает объект, описывающий атрибуты, установленные для контекста WebGL при его создании.
Возвращает текущую активную грань куба.
Возвращает текущий активный уровень mipmap.
Возвращает текущую RenderTarget, если она есть; в противном случае возвращает null.
target — результат будет скопирован в этот Vector4.
Возвращает текущий видовой экран.
target — результат будет скопирован в этот Vector2.
Возвращает ширину и высоту буфера отрисовки рендерера, в пикселях.
Возвращает текущее используемое соотношение пикселей устройства.
target — результат будет скопирован в этот Vector4.
Возвращает область ножниц.
Возвращает true, если тест ножниц включен; возвращает false в противном случае.
target — результат будет скопирован в этот Vector2.
Возвращает ширину и высоту выходного холста рендерера, в пикселях.
target — результат будет скопирован в этот Vector4.
Возвращает область просмотра.
Инициализирует заданную текстуру. Полезно для предварительной загрузки текстуры вместо ожидания первого рендера (который может вызвать заметные задержки из-за накладных расходов на декодирование и загрузку GPU).
Сброс состояния GL на значение по умолчанию. Вызывается внутренне, если контекст WebGL потерян.
buffer - Uint8Array - единственный тип назначения, поддерживаемый во всех случаях, другие типы зависят от renderTarget и платформы. Подробности смотрите в WebGL spec.
Считывает пиксельные данные из renderTarget в переданный вам буфер. Это обертка вокруг WebGLRenderingContext.readPixels().
Для считывания WebGLCubeRenderTarget используйте необязательный параметр activeCubeFaceIndex, чтобы определить, какая грань должна быть считана.
Рендеринг scene или другого типа object с помощью camera.
Рендеринг выполняется на ранее указанную renderTarget, установленную вызовом .setRenderTarget или на холст, как обычно.
По умолчанию буферы рендеринга очищаются перед рендерингом, но вы можете предотвратить это, установив свойство autoClear в false.
Если вы хотите предотвратить очистку только определенных буферов, вы можете установить для свойств autoClearColor, autoClearStencil или autoClearDepth значение false. Чтобы принудительно очистить один или несколько буферов, вызовите .clear.
Рендеринг группы геометрии буфера с использованием камеры и с указанным материалом.
object - экземпляр Object3D
program - экземпляр WebGLProgram
Рендерит экземпляр ImmediateRenderObject. Вызывается функцией renderObjectImmediate().
Может использоваться для сброса внутреннего состояния WebGL. Этот метод наиболее актуален для приложений, которые используют один контекст WebGL в нескольких библиотеках WebGL.
callback — Функция будет вызываться каждый доступный кадр. Если передано null
, это остановит любую уже идущую анимацию.
Встроенная функция, которая может быть использована вместо requestAnimationFrame. Для проектов WebXR необходимо использовать эту функцию.
Устанавливает прозрачную альфу. В качестве входного значения может быть использовано число в диапазоне от 0.0 до 1.0.
Устанавливает прозрачный цвет и непрозрачность.
Устанавливает заданный WebGLFramebuffer. Этот метод можно использовать, только если цель рендеринга не установлена через .setRenderTarget().
Устанавливает соотношение пикселей устройства. Обычно используется для устройств с высоким разрешением, чтобы предотвратить смазывание холста при выводе.
renderTarget — renderTarget, который должен быть активирован. Если задано значение null, то вместо него в качестве активной цели рендеринга устанавливается холст.
activeCubeFace — Указывает активную сторону куба (PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5) WebGLCubeRenderTarget (необязательно).
activeMipmapLevel — Указывает активный уровень mipmap (необязательно).
Этот метод устанавливает активный объект рендеринга.
Параметры x, y, ширины и высоты области ножниц.
Опционально, 4-компонентный вектор, определяющий параметры региона.
Устанавливает область ножниц от (x, y) до (x + ширина, y + высота).
(x, y) - левый нижний угол области ножниц.
Включите или отключите проверку ножниц. Если этот параметр включен, только пиксели в пределах определенной области будут затронуты дальнейшими действиями рендеринга.
Устанавливает пользовательскую функцию непрозрачной сортировки для WebGLRenderLists. Передайте null, чтобы использовать функцию по умолчанию painterSortStable.
Устанавливает пользовательскую прозрачную функцию сортировки для WebGLRenderLists. Передайте null, чтобы использовать функцию по умолчанию reversePainterSortStable.
Изменяет размер выводимого холста до (ширина, высота) с учетом соотношения пикселей устройства, а также устанавливает область просмотра в соответствии с этим размером, начиная с (0, 0). Установка updateStyle в false предотвращает любые изменения стиля выводимого холста.
Параметры x, y, ширины и высоты области просмотра.
Опционально, 4-компонентный вектор, задающий параметры видового экрана.
Устанавливает область просмотра для рендеринга из (x, y) в (x + ширина, y + высота).
(x, y) - левый нижний угол области.
О том как получить исходный код этого модуля читайте тут.