루아 (love2d 프레임 워크), 498 바이트
나는 이것을 자신을위한 운동으로 더 많이했다. 그래서 그것이 골프를 할 수있을 정도로 짧지는 않지만, 여기에 추가하고 싶었다. 너무 늦었어도
여기에 골프 코드가 설명되고 얽힌 버전입니다.
l=love g,p,rm,bm,gm,s=l.graphics,0,1,1,1,[[uniform float m[4];vec4 effect(vec4 co,Image t,vec2 c,vec2 s){vec4 p=Texel(t,c);p.r=p.r*m[0];p.b=p.b*m[1];p.g=p.g*m[2];return p;}]]t=g.setShader h=g.newShader(s)function l.draw()h:send("m",rm,gm,bm)if p~=0 then t(h)g.draw(p)t()end end function l.filedropped(f)a=f:getFilename()p=g.newImage(f)end function l.keypressed(k)if k=="0"then rm,gm,bm=1,1,1 end if k=="1"then rm,gm,bm=1,0,0 end if k=="2"then rm,gm,bm=0,1,0 end if k=="3"then rm,gm,bm=0,0,1 end end
다음은 * .jpg 파일을 가져와야하는 코드입니다. 이미지가 삽입 된 후 빨강 (1) 녹색 (2) 또는 파랑 (3) 채널의 숫자 버튼을 누를 수 있습니다. 또한 기본 사진을 다시 보려면 0을 누르십시오. 실제로 창에 그림 만 표시됩니다.
l=love
g=l.graphics
p=0
rm,bm,gm=1,1,1
s = [[uniform float m[4];
vec4 effect(vec4 co,Image t,vec2 c,vec2 s){vec4 p=Texel(t,c);p.r = p.r * m[0];p.b = p.b * m[1]; p.g = p.g * m[2]; return p;}
]]
sh=g.newShader(s)
function l.draw()
sh:send("m",rm,gm,bm)
if p~=0 then
g.setShader(sh)
g.draw(p)
g.setShader()
end
end
function l.filedropped(f)
a=f:getFilename()
p=g.newImage(f)
end
function l.keypressed(k)
if k=="0"then rm,gm,bm=1,1,1 end
if k=="1"then rm,gm,bm=1,0,0 end
if k=="2"then rm,gm,bm=0,1,0 end
if k=="3"then rm,gm,bm=0,0,1 end
end
모든 작업을 수행하는 중요한 부분은 처음에 작은 문자열 선언이거나 얽힌 셰이더입니다.
uniform float m[4];
vec4 effect(vec4 co,Image t,vec2 c,vec2 s)
{
vec4 p=Texel(t,c);
p.r = p.r * m[0];
p.b = p.b * m[1];
p.g = p.g * m[2];
return p;
}
이미지의 실제 픽셀을 가져 와서 필요에 따라 채널을 표시합니다.
내 테스트 이미지와 채널에 대한 다른 출력 (다른 이미지도 포함)