MATSUZAKIの日記 RSSフィード Twitter

Back to Peppermint.jp

2016-01-29

AlphaGo

各所で話題になってるGoogle の DeepMind 囲碁論文が面白い。

https://storage.googleapis.com/deepmind-data/assets/papers/deepmind-mastering-go.pdf

RAVEやProgressive wideningのようなUCT系の探索ノード決定ヒューリスティックを使わず、ニューラルネットが吐いた確率分布を使ってたりはするけど、rollout policyやtree policyはもろいままでの囲碁AIどおりだし、ニューラルネットへの入力にダメの数やシチョウ入れてるので、一部ニュースの汎用AI作ったら囲碁も強かったんだいって言うのは無理がある気が・・・

2015-10-12

Arduboy

ArduboyのDeveloper kitが届いたのでaobench移植したり日本語表示したり

2015-09-10

SVGコードゴルフ

圧縮アルゴリズムの気持ちになるですよ

推測するな計測せよに基づき最適化プログラムをでっちあげる。

import java.io.{BufferedReader, ByteArrayInputStream, ByteArrayOutputStream, InputStreamReader}
import java.nio.charset.Charset
import java.util.zip._

object GZ {
  def compress(in: String, charset: String) = {
    val buf = new ByteArrayOutputStream()
	val out = new GZIPOutputStream(buf)
    val bytes = in.getBytes(charset)
	out.write(bytes, 0, bytes.length)
	out.close
    buf.toByteArray
  }
}

object Svg {
  def toString(data: List[(String, List[String])]) = {
    var s = """<svg xmlns="http://www.w3.org/2000/svg" width="600" height="250" stroke-width="16" fill="none" stroke="#4a87ee">"""
    for ((tag, elms) <- data) {
      s += "<" + tag
      for (e <- elms)
        s += " " + e
      s += "/>"
    }
    s += """</svg>"""
    s
  }

  var min = Int.MaxValue
  var minSvg: String = null

  def optOne(data: List[(String, List[String])], svg: List[(String, List[String])]): Unit = {
    data match {
      case e :: es =>
        val (tag, attrs) = e
        for (as <- attrs.permutations) {
          optOne(es, (tag, as) :: svg)
        }
      case Nil =>
        val s = toString(svg)
        val size = GZ.compress(s, "UTF-8").length
        if (size < min) {
          min = size
          minSvg = s
          println(minSvg + " --> " + min)
        }
    }
  }

  def opt(data: List[(String, List[String])]) = {
    for (per <- data.permutations) {
      optOne(per, Nil)
    }
  }

  def main(args: Array[String]): Unit = {
    val data = List(("path", List("""d="m173 102a51 51 0 1 1-13-30m20 37h-53"""")),
      ("circle", List("""cy="128"""", """r="32"""", """cx="227"""", """stroke="#d83038"""")),
      ("circle", List("""cy="128"""", """r="32"""", """cx="313"""", """stroke="#f4c022"""")),
      ("path", List("""d="m401 160a31 31 0 1 1 0-61m-4 0a24 29 0 1 1 0 61m26-67v79m-1-12a20 20 0 1 1-52 17"""")),
      ("path", List("""d="m449 51v115"""", """stroke="#4ab95a"""")),
      ("path", List("""d="m529 118a30 30 0 1 0-2 24m5-32-62 28"""", """stroke="#d83038"""")))
    val s = toString(data)
    println(s + " --> " + GZ.compress(s, "UTF-8").length)
    opt(data)
    println(minSvg + " --> " + min)
    // for (c <- GZ.compress(s, "UTF-8"))
    //   println(c)
    println(toString(data))
  }
}
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="250" stroke-width="16" fill="none" stroke="#4a87ee">
<circle cx="313" r="32" stroke="#f4c022" cy="128"/>
<circle cx="227" r="32" stroke="#d83038" cy="128"/>
<path d="m449 51v115" stroke="#4ab95a"/>
<path d="m173 102a51 51 0 1 1-13-30m20 37h-53"/>
<path d="m529 118a30 30 0 1 0-2 24m5-32-62 28" stroke="#d83038"/>
<path d="m401 160a31 31 0 1 1 0-61m-4 0a24 29 0 1 1 0 61m26-67v79m-1-12a20 20 0 1 1-52 17"/>
</svg>

これによってgzip後のサイズを269バイトにまで削減できる

2015-09-01

CEDECの資料とか

WebGL

http://app.famitsu.com/20150827_561788/

http://wgld.org/o/tools/slide/doc/005/

Emscripten

http://www.aqualead.co.jp/getnow.html

汎用スマホ利用VRゴーグルって,やっぱダメですかね?

http://www.4gamer.net/games/999/G999902/20150828125/

すべては快適な体験のために:Oculusによる実践的VR開発技法

http://www.4gamer.net/games/195/G019528/20150828092/

http://app-review.jp/news/272961

Spherical Harmonics for Lighting

http://www.geomerics.com/blogs/simplifying-spherical-harmonics-for-lighting/

http://www.geomerics.com/wp-content/uploads/2015/08/CEDEC_Geomerics_ReconstructingDiffuseLighting1.pdf

サブディビジョンサーフェス

https://docs.google.com/presentation/d/1mOjFkOkGmZWMiYTOJNRfU_zCbTxUdr2hIDaXE65pxDU/edit#slide=id.p

http://takahito-tejima.github.io/

球面ガウス

http://cedec.cesa.or.jp/2015/movie/AC/player_2137.html

http://www.jp.square-enix.com/info/library/

Designing Physically Based Microfacet Models for Next Generation

http://research.tri-ace.com/

双方向パストレーシング(BDPT)の基礎からOPENCLによる実装まで

http://www.slideshare.net/takahiroharada/introduction-to-bidirectional-path-tracing-bdpt-implementation-using-opencl-cedec-2015

フーリエ変換を用いたテクスチャ解像度推定とその応用

http://www.slideshare.net/nikuque/ss-52190439

http://www.4gamer.net/games/999/G999902/20150829008/

物理ベース時代のライトマップベイク奮闘記

http://www.siliconstudio.co.jp/rd/presentations/

2015-08-27

GamePlay + Emscripten

HGIMG4のEmscripten対応でGamePlay3DのEmscripten対応を部分的にやってたのをGamePlay本体に移植してみた。

元がOpenGL ES対応しててマルチプラットフォーム対応なので初期化と入力系以外は特に何もしなくても動く。

音のストリーミングスレッド使ってるのの回避とゲームパッド対応はなんとかしないとということで放置してたけど、CEDEC2015でEmscripten対応ゲームエンジン少ないって話だったのでとりあえず。

http://zakki.github.io/GamePlay/

https://github.com/gameplay3d/GamePlay/compare/next...zakki:emscripten

f:id:MATSUZAKI:20150827232232p:image