das einzige was auszusetzen wäre ist, dass du das gesammte tile kopierst, obwohl du ja eigentlich nur ein pixel benötigst.
zudem übermalst du das selbe bitmap mit den 3 ebenen und fragst erst am ende ab ob das feld passierbar ist.
sofern passierbare felder weiß und nicht transparent sind, fragst du also nur die unterste ebene ab.
ansonsten kann man diverse zwischenschritte übrspringen und rechnungen durch mod verkürzen.

Code:
 def pathing_test(real_x,real_y)
    block = Color.new(0,0,0,255)#damit muss man das object/die farbe nicht 3 mal in der schleife erzeugen
    tile = RPG::Cache.tileset("PathingMap-"+@tileset_name)
    int_x = real_x / 32
    int_y = real_y / 32
    add_x = real_x % 32#damit es nicht 3 mal in der schleife ausgerechnet werden muss
    add_y = real_y % 32#siehe oben
    for i in [2, 1, 0]
      tile_id = data[int_x, int_y, i] - 384 #tileset tiles beginnen mit 384
      next if tile_id < 0 #achtung nicht 1! dadurch würdest du das erste tile überspringen
      ry = tile_id / 8
      rx = tile_id % 8 #geht mit mod einfacher und vermutlich schneller (wenn auch unwesentlich, sind ja nur kleine berechnungen)
      return false if tile.get_pixel(rx+add_x, ry+add_y) == block
      #schleife bricht ab sobald das feld nicht passierbar ist -> weniger schleifendurchläufe = weniger rechenzeit
    end
    return true#
 end