2P¥«¥é¡¼Åù¤Î¥¥ã¥é¥¯¥¿¡¼¤Î¿§°ã¤¤¤òɽ¼¨¤µ¤»¤ë°Ù¤Ë¸½¾õ¿§¤Î°ã¤¦PNG¤ò¤½¤Î¤Þ¤ÞÍѰդ·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢
ÍÆÎÌÀáÌó¤Î°ÙGLSL¤òÍѤ¤¿§ÊѤ¨¤ò¤·¤è¤¦¤È¤·¤Þ¤·¤¿¡¢¤¬¡¢¤¦¤Þ¤¯¤¤¤¤Þ¤»¤ó¡£
https://1drv.ms/u/c/fca890c0cc61310c/EfFHrnmYtnZKlQGfZHn0Jp8BxYdZWZ3UQ-JtGaIjCtn3ow?e=gO2mXD
(¾åµ¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤)
¢£irokae.frag
#if defined(OPENGL_ES) || defined(GL_ES) #ifdef GL_FRAGMENT_PRECISION_HIGH precision highp float; #else precision mediump float; #endif #endif /////////////////////////////////////////////////////////// // Uniforms uniform sampler2D u_diffuseTexture; /////////////////////////////////////////////////////////// // Varyings varying vec2 v_texCoord; varying vec4 v_color; void main() { vec4 texColor = texture2D(u_diffuseTexture, v_texCoord); // ¿§ÃÖ´¹¥ê¥¹¥È vec3 targetColor1 = vec3(0.561, 0.584, 0.984); // R143, G149, B251 vec3 replaceColor1 = vec3(0.980, 0.557, 0.557); // R250, G142, B142 vec3 targetColor2 = vec3(0.388, 0.306, 0.569); // R 99, G 78, B152 vec3 replaceColor2 = vec3(0.600, 0.306, 0.306); // R153, G 78, B 78 // ÃÖ´¹½èÍý(¤Á¤ç¤¤¸íº¹´Þ¤áÊѹ¹) if (distance(texColor.rgb, targetColor1) < 0.01) { texColor.rgb = replaceColor1; } else if (distance(texColor.rgb, targetColor2) < 0.01) { texColor.rgb = replaceColor2; } gl_FragColor = v_color * texColor; }
¢£ËÜÂÎ
#include "hgimg4.as" gpreset screen 0, 600, 600 GameTime = 0.0 celload "mei.png",1 ;¿§ÊѤ¨Á°¤Î²èÁü gpusershader "res/shaders/sprite.vert", "irokae.frag", "" ;¿§ÊѤ¨¥·¥§¡¼¥À¡¼ÀßÄê gsel 1 ;¢¨Buffer¤ÇXY¤Î¥µ¥¤¥º¼èÆÀÍÑ buffer 2,ginfo_winx,ginfo_winy,screen_offscreen + screen_usergcopy ;¿§ÊѤ¨ÍÑBufferÀßÄê(screen_usergcopyÆÍ¤Ã¹þ¤à¤È±Ç¤é¤Ê¤¯¤Ê¤ë) celput 1 ;¸µ¤Î²èÁü¤ò¥³¥Ô¡¼ celdiv 2,0,0,ginfo_winx/2,ginfo_winy/2 ;²èÁüʬ³ä¡õÃæ¿´ÅÀÀßÄê buffer 1,1,1,0 ;¸µ¤Î²èÁü¤Ï¤¤¤é¤ó¤Î¤ÇÇË´þ repeat gsel 0 redraw 0 color 128,128,128 boxf GameTime++ XºÂɸ = 300.0 YºÂɸ = 300.0 gmode 4,,,255 pos XºÂɸ, YºÂɸ celput 2, 0 , 1.0-0.5*cos( GameTime* M_PI / 180.0 ) ,1.0-0.5*cos( GameTime* M_PI / 180.0 ),GameTime* M_PI / 180.0 redraw 1 await 16 loop
¡¿§ÊѤ¨Á°¤Î²èÁü¤òbuffer1¤ËÆÉ¹þ
¢¥«¥¹¥¿¥à¥·¥§¡¼¥À¡¼¤òÀßÄꤷ¤Æbuffer2¤òºîÀ®(¥ª¥Õ¥¹¥¯¥ê¡¼¥ó¡¢¥«¥¹¥¿¥à¥·¥§¡¼¥À¡¼Å¬±þ)
£buffer2¤Ëbuffer1¤Î²èÁü¤ò¥³¥Ô¡¼¡¢celdiv¤Çʬ³ä¡õÃæ¿´ÅÀÀßÄê
¤¤¤¤é¤Ê¤¤buffer1¤Î¸µ²èÁüºï½ü(¶Ë¾®¤Î²èÌ̤ǽé´ü²½)
¾åµ¤Îʪ¤ò¤ä¤Ã¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢¢¤ÎÃʳ¬¤Ç¥«¥¹¥¿¥à¥·¥§¡¼¥À¡¼¤òŬ±þ¤·¤Æbuffer¤òºîÀ®¤¹¤ë¤È¡¢
²èÌ̾å¤Ë²¿¤â±Ç¤é¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
¥·¥§¡¼¥À¡¼¤Î¥Ñ¥¹ÀßÄ꤬°¤¤¤Î¤«¤Ê¤È»×¤¤"res/shaders/irokae.frag"¤È¤·¤Æ¤â¡¢¤¦¤Þ¤¯¤¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
flag¥Õ¥¡¥¤¥ë¤¬°¤¤¤Î¤«¤Ê¤È»×¤Ã¤¿¤Î¤Ç¤¹¤¬¡¢Ê̤Îʪ¤ò»ÈÍѤ·¤Æ¤â¤¦¤Þ¤¯¤¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
¤½¤â¤½¤â¤Î¡¡Á¤¤Î¼ê½ç¤¬°¤¤¤È»×¤¦¤Î¤Ç¤¹¤¬¡¢¤Ê¤«¤Ê¤«2D¤Î¥«¥¹¥¿¥à¥·¥§¡¼¥À¡¼¤Îµ½Ò¤Î»ñÎÁ¤¬¸«¤Ä¤«¤é¤Ê¤¤°Ù¡¢ºÃÀÞ¤·¤Æ¤¤¤Þ¤¹¡£
Ãμ±¤Î¤¢¤ëÊý¤Ï¤´¶µ¼ø¤¤¤¿¤À¤±¤ì¤Ð¹¬¤¤¤Ç¤¹¡£
(¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤Ï10¹ÔÌܤΡÖ+ screen_usergcopy¡×¤ÎÉôʬ¤¬¥³¥á¥ó¥È¥¢¥¦¥È¤µ¤ì¤Æ¤ª¤ê¡¢¿§ÊѤ¨Á°¤Î²èÁü¤¬É½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£)