Как я могу определить дополнительные режимы наложения в Three.js? - PullRequest
0 голосов
/ 26 февраля 2019

Я хотел бы определить дополнительные режимы наложения в Three.js, например, те, которые вы можете найти в Photoshop.Например:

Линейный прожиг: пиксель = (src + dst) - 1.0

Экран: пиксель = (src + dst) - (src * dst)

ПолныйСписок режимов наложения, которые я хочу добавить, вместе с их уравнениями можно найти по этой ссылке: http://www.nutty.ca/articles/blend_modes/

Для ThreeJs доступны только обычное, аддитивное, вычитающее и умноженное наложение без использования пользовательских режимов наложения.Однако, Lightest и Darkest легко добавляются с помощью «CustomBlending» и уравнений смешивания Three.Например:

material.blending = THREE[ "CustomBlending" ];
if(blendMode === "Lightest"){
    material.blendEquation = THREE.MaxEquation;
}
if(blendMode === "Darkest"){
    material.blendEquation = THREE.MinEquation;
}

Подробнее о пользовательских уравнениях смешивания здесь: https://threejs.org/docs/#api/en/constants/CustomBlendingEquations

Мой вопрос: Как я могу определить дополнительные blendEquations?

Я искал файлы src для Three на Github, в частности WebGLState.js, где, похоже, определены blendEquations.Ниже приведено определение AddEquation:

if ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {

    gl.blendEquation( gl.FUNC_ADD );

    currentBlendEquation = AddEquation;
    currentBlendEquationAlpha = AddEquation;

}

. Вы можете просмотреть код здесь: https://github.com/mrdoob/three.js/blob/118ef7cd4426c5bd5a01bc5102eb1d97d89578ed/src/renderers/webgl/WebGLState.js

Я не могу найти, где определены другие функции blendFunctions.Может кто-нибудь помочь мне с этим?Это лучший способ сделать это редактирование файлов Three.js src?Являются ли определяющие факторы источника и назначения (material.blendSrc = THREE.SrcAlphaFactor;) частью этого?

Спасибо!

...