Я хотел бы определить дополнительные режимы наложения в 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;) частью этого?
Спасибо!