RPG Maker XP 처럼 감산으로 블렌딩하는 방법은 RPG Maker MV에서 지원하지 않습니다.

자료를 찾아보면, 

1
2
3
gl.blendMode(gl.ONE, gl.ONE);
gl.blendEquation(gl.FUNC_SUBTRACT);
gl.blendEquation(gl.FUNC_REVERSE_SUBTRACT);
cs


렌더링 시 이런 식으로 해야 한다고 하지만, PIXI에는 이런 블렌딩 옵션이 없습니다.

결국 비슷한 블렌드 모드를 새로 추가해야 합니다.

하지만 기본 PIXI 제공 블렌딩 옵션은 대략 20개인데 이 중에는 비슷한 효과가 없습니다.
 
ADD1
ADD_NPM18
COLOR15
COLOR_BURN8
COLOR_DODGE7
DARKEN5
DIFFERENCE11
EXCLUSION12
HARD_LIGHT9
HUE13
LIGHTEN6
LUMINOSITY16
MULTIPLY2
NORMAL0
NORMAL_NPM17
OVERLAY4
SATURATION14
SCREEN3
SCREEN_NPM19
SOFT_LIGHT10

게다가 거의 같은 효과들이 많았습니다.


core/renderers/webgl/utils/mapWebGLBlendModesToPixi.js : BLEND_MODES.INVERT_COLOR 는 필자가 새로 추가한 것이다.


core/const.js : INVERT_COLOR는 필자가 새로 추가한 것이다.

먼저, RPG Maker XP의 감산 블렌드는 흰색이 검은색으로 변합니다. 


하지만 소재 관리에서 이미지를 불러올 때 검은색이 자동으로 투명색으로 바뀌게 되기 때문에 검은색은 투명해집니다.


흰색이 검은색으로 변하지만, 검은색은 투명색으로 지정되어있어 투명해집니다.


RPG Maker MV에서도 새로운 블렌드 모드를 만들면 다음과 같이 흰색을 검은색으로 바꿀 수 있습니다. 


다만 차이점이 있다면 검은색을 투명색으로 지정하는 기능은 없습니다. 


RPG Maker MV는 투명색 지정 기능이 없으며 투명색은 알파 채널에서 자동으로 인식합니다. 


따라서 다음과 같은 결과가 됩니다.


흰색이 검은색으로 변하지만, 투명색 지정 기능이 없기 때문에 검은색이 그대로 나오게 됩니다.


새로운 블렌드 모드는 간단히 추가가 가능합니다.


1
2
var gl = Graphics._renderer.gl;
Graphics._renderer.state.blendModes[20= [gl.ZERO, gl.ONE_MINUS_SRC_COLOR];
cs


이렇게 하고, $gameScreen.showPicture(그림 번호, 그림 파일명, x, y, 원점, 스케일X, 스케일Y, 투명도, 블렌드 타입) 메서드를 호출합니다.


1
2
var blendType = 20;
$gameScreen.showPicture(1'MadeWithMv'000100100255, blendType);
cs