サンプルが一つのオブジェクトで複数の効果だったので求めてたものとはちょっと違いましたがご教授いただきありがとうございました!
考え方を知れたのでうまく実装することができました。
surface_copyとか使わないんですね・・・。
複数オブジェクトでの実装方法を書いておきます。
Createイベント
isSurface = false;
objSurface1(レイヤーが一番下)のStepイベント
isSurface = (instance_exists(objSurface2) || instance_exists(objSurface3)); //レイヤーが下であるほど多くなる
objSurface3(レイヤーが一番上)のDrawGUIイベント
var sfc = application_surface;
if(instance_exists(objSurface1)) sfc = objSurface1._surf; //レイヤーが上であるほど多くなる
if(instance_exists(objSurface2)) sfc = objSurface2._surf;
if (!surface_exists(_surf)){
var w = surface_get_width(application_surface);
var h = surface_get_height(application_surface);
_surf= surface_create(w,h);
}
if(isSurface) surface_set_target(_surf);
shader_set(shd_grayscale);
draw_surface(sfc, 0, 0);
shader_reset();
if(isSurface) surface_reset_target();
通報 ...