다른 공간이지만 관련 공간이라고 생각하기 때문에 이것을 OpenGL에서 태그 지정합니다.Photoshop과 같은 "lighten"프래그먼트 셰이더의 문제점
OpenGL (ES2?)을 사용하는 Flash 11에서 포토샵과 같은 블렌딩을 사용하려고합니다. 나는 밝혀야 할 밝기와 관련하여 특별한 이슈를 가지고 있습니다 :
outputColor.rgb = max (base.rgb, blend.rgb);
내 레이어에 투명성이 있기 때문에 문제가 있다고 생각합니다. 그러나 레이어를 미리 곱해도 여전히 문제가 있습니다 (이미지가 너무 어둡습니다).
여기 단계가 빠졌습니까? (이것은 AGAL, Adobe의 GL 어셈블리입니다.)
[Shader.Fragment]
tex ft0, v0, fs0 <2d,nearest,nomip,clamp>
tex ft1, v0, fs1 <2d,nearest,nomip,clamp>
// premultiply
mul ft2, ft1.xyzw, ft1.wwww
// premultiplied values
max oc, ft0, ft2
그래, 나는 그것도 움직이려고했거나 심지어 0으로 설정하는 것을 잊어 버렸다는 것을 잊어 버렸지 만, 여전히 올바르지 않습니다. 미리 곱해진 값을 가진 원본 이미지를 처리해야 할 수도 있습니다 ... – ansiart
당신이 맞을지도 모르겠지만, Flash는 미리 이미지를 만들고, 그것을 곱셈 해 봅니다. 어떤 OpenGL 블렌딩 상태를 사용하고 있습니까? – crazyjul
src_alpha : one_minus_src_alpha. 그렇습니다. 미리 배가 된 값으로이를 망칠 수 있습니다. 내 모든 텍스처를 프레임 버퍼링하거나 수동으로 다중화해야하는 것처럼 보입니다. Thansk 당신의 도움! – ansiart