view presen/pre1.html @ 12:ca83f1f4630f

fix
author tkaito@nw0534.st.ie.u-ryukyu.ac.jp
date Wed, 25 Feb 2009 19:26:03 +0900
parents f813141366d4
children a8ce76309100
line wrap: on
line source

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>2009年度卒業論文</title>
<!-- metadata -->
<meta name="generator" content="S5" />
<meta name="version" content="S5 1.1" />
<meta name="presdate" content="20050728" />
<meta name="author" content="Tagano Kaito" />
<meta name="company" content="ie-ryukyu" />
<!-- configuration parameters -->
<meta name="defaultView" content="slideshow" />
<meta name="controlVis" content="hidden" />
<!-- style sheet links -->
<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" />
<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" />
<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" />
<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" />
<!-- S5 JS -->
<script src="ui/default/slides.js" type="text/javascript"></script>
</head>
<body>

<div class="layout">
<div id="controls"><!-- DO NOT EDIT --></div>
<div id="currentSlide"><!-- DO NOT EDIT --></div>
<div id="header"></div>
<div id="footer">
<h1>1-322 / 20090226</h1>
<h2>卒業論文</h2>
</div>

</div>


<div class="presentation">

<div class="slide">
<center>
<br><br>
<p><font size="10" color="#000000">並列プログラミングを用いた<br>ゲームフレームワークの設計と実装</font></p>
<br>
<p><font size="5" color="#000000">琉球大学 工学部情報 工学科 055734A</font></p>
<p><font size="5" color="#000000">多賀野海人</font</p>
<p><font size="5" color="#000000">指導教官:河野真治</font</p>
<p><font size="5" color="#000000">Feb, 26, 2009</font></p>
</center>
</div>

<div class="slide">
<h1>目次</h1>
<ul>
<li>研究背景と目的</li>
<li>Cell, SPE を用いた</li>
<li>Ceriumとは</li>
<li>ゲーム開発</li>
<li>Ceriumを用いたゲーム開発</li>
<li>Rendering</li>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>

<div class="slide">
<h1>研究背景と目的</h1>
<ul>
<br>
<li><font size="5" color="#509050">高性能なコンピュータを用いて完成度の高いゲームを作成したい!</font></li>
<li><font size="4" color="#000000">並列処理を用いたゲームプログラミングは、学部生にとって困難である。</font></li>
<li><font size="4" color="#000000">データ転送やタスクの生成等のこれまで学んだことのない技術が多く存在する。</font></li>
<li><font size="4" color="#000000">学生実験では、ゲームの完成度を上げることが難しい。</font></li>
<br>
<font size = "4">
 本研究では、PlayStation3上でゲームプログラミングを行う際に、Cellの性能を活かしながら、
学生実験での完成度の高いゲーム開発を目的としている。
</font>
<!-- 研究背景と目的
<font size="5">
 ゲームプログラミングにおける並列処理は、データが処理される順番を把握することができないので
出力結果などが特定しづらく、デバッグが困難である。データ転送やタスクの生成等のこれまで学んだことのない技術が多く存在する。
短期間の学生実験では新しい技術を習得することに時間を割かれ、ゲームの完成度を上げることが難しくなる。
<br><br>
 本研究では、PlayStation3上でゲームプログラミングを行う際に、Cellの性能を活かしながら、
アーキテクチャに依存する記述を排除した、並列プログラミングを目的としている。
</font>
-->
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>Cellとは</h1>
<ul>
<li><font size="4" color="#000000">Cellは、マルチコアCPUの1つで、構成は「ヘテロジニアス・マルチコアプロセッサ構成」である。
汎用的な用途に対応した1種類のコアを用意するのではなく、制御系プロセッサコア(PPE)と演算系プロセッサコア(SPE)という異なる
コアを用意している。</font></li>
<li></li>
<img src="photo/Cell-main.jpg" alt="Cell-main" width="430" height="283">
<img src="photo/SPE.jpg" alt="SPE" width="233" height="221">
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>

<div class="slide">
<h1>Cellとは</h1>
<ul>
<li>SPU内部のパイプライン</li>
<font size="4" color="#000000">SPU内部では、読み込み(read)、実行(exec)、書き出し(write)の3つの動作が3段パイプラインで実行される</font>
<center>
<br><br>
<img src="photo/manager-pipeline.png" alt="manager-pipeline" width="539" height="264">
</center>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>

<div class="slide">
<h1>ゲーム開発</h1>
<ul>
<li>Cellを用いたゲーム開発</li>
<li>必要になる知識、技術など</li>
<li>PS3を用いたプログラミング</li>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>

<div class="slide">
<h1>Ceriumを用いたゲーム開発</h1>
<ul>
<li>手順</li>
<li></li>
<li></li>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>

<div class="slide">
<h1>Ceriumとは</h1>
<ul>
<li><font size="4" color="#000000">Cerium は以下の3つの要素で構成されている。</font></li>
<pre>
Scene Graph
Rndering Engine
Task Manager
</pre>
<center>
<img src="photo/Cerium-main.png" alt="Cerium-main" width="400" height="300">
</center>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>

<div class="slide">
<h1>ToDo、Doing、Done</h1>
<ul>
<!--
<li><font size="3" color="#000000"><font size="5" color="#990000">済</font>: Texture の分割 (複数のTexture、blcok)</font></li>
<li><font size="3" color="#000000"><font size="5" color="#990000">済</font>: 分割した Texture からの Scale の作成</font></li>
<li><font size="3" color="#000000"><font size="5" color="#990000">済</font>: Textureの分割数(px, py)</font></li>
<li><font size="3" color="#000000"><font size="5" color="#990000">済</font>: 読み込んだTextureのハッシュテーブル</font></li>
<li><font size="3" color="#000000"><font size="5" color="#990000">済</font>: blender、空のTextureの代わりを用意する</font></li>
<li><font size="3" color="#000000"><font size="5" color="#990000">済</font>: Textureの分割、Scalの組み込み</font></li>
-->
<li><font size="4" color="#000000"><font size="5" color="#990000">済?</font>: BlenderのScript、base64エンコード、書き込みをxmlの最後に持っていく</font></li>
<li><font size="4" color="#000000"><font size="5" color="#000000">未</font>: ゲーム班のGameのPS3への移植の手伝い?</font></li>
<li><font size="4" color="#000000"><font size="5" color="#959500">New</font>: ユーザにxmlを記述させ、そこからMakefileを生成する</font></li>
<li><font size="4" color="#000000"><font size="5" color="#959500">New</font>: blenderから生成したxmlのDTD作成</font></li>
<li><font size="4" color="#000000"><font size="5" color="#000000">未</font>: !多体問題!</font></li>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>blenderから生成されるxmlの仕様変更</h1>
<ul>
<li><font size="5" color="#000000"></font>変更したxmlの構成</li>
<font size="4">
<pre>
OBJECT-3D
  -surface
    --cordinate
    --normal
    --model
    --texture
    --image-flag
  -surface
    --cordinate
    --normal
    --model
    --texture
    --image-flag
       :
       :
  -image
  -image
       :
/OBJECT-3D
</pre>
</font>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>PythonScript</h1>
<ul>
<li><font size="5" color="#000000">Textureが貼られていなかった時に代わりのものを用意する</font></li>
<font size="4" color="#000000">現在は真っ白な画像、回転とかが分かるような画像に変更</font>
<font size="4" color="#000000">xmlファイルの生成、xmlファイル読み込みの部分の変更</font>
<font size="4">
<br><br>
<center>
<img src="photo/sample1.png" alt="sample_before.png" width="80" height="80" border="1">
<img src="photo/sample.png" alt="sample_after.png" width="80" height="80" border="1">
<br>
図:sample.png 左からbefore、after
<br>
</center>
<pre>

iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAAAAADhZOFXAAAAHklEQVQIHWP8zwACjAxMYBpIYDJg
MgyMMMVwETgDAGLjAgkzd5FJAAAAAElFTkSuQmCC

</pre>

<li></li>

</font>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1></h1>
<ul>
<li><font size="5" color="#000000"></font></li>
<font size="4">

</font>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>
<!--
<div class="slide">
<h1>Textureの分割、Scale</h1>
<ul>
<li><font size="5" color="#000000">Textureの分割、Scale処理に用いるデータ構造</font></li>
<font size="4">
<pre>

uint32 *tex_dest = (uint32*)manager->malloc(tile_size);

// 1 / 2                                                                                                                                          
for (int y = 0; y < tex_height; y += TEXTURE_SPLIT_PIXEL*2) {
    for (int x = 0; x < tex_width; x += TEXTURE_SPLIT_PIXEL*2) {
        for (int j = 0; j < TEXTURE_SPLIT_PIXEL*2; j+=2) {
            for (int i = 0; i < TEXTURE_SPLIT_PIXEL*2; i+=2) {
                tex_dest[t++] = tex_src[(x+i) + tex_width*(y+j)];
            }
        }
    }
}

</pre>
</font>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>
-->
<!--
<div class="slide">
<h1>ハッシュテーブル</h1>
<ul>
<pre><font size="4" color="#000000">
// ハッシュテーブル
struct
hashtable{
  int tx_id; // Texture id                                                              
  char* key; // キー
};
</font></pre>
<pre><font size="4" color="#000000">
// ハッシュ関数
for(int i = 0; key[i]; i++){
    //value += key[i] + 1;
    value += key[i]*(i+1)*17 + 1;
  }
  return fmod(value, N);
}
</font></pre>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>

<div class="slide">
<h1>ハッシュテーブル</h1>
<pre><font size="3" color="#000000">
// 登録、検索
int
hash::hash_regist(const char* key){
  int hash = hash_function(key);
  for(int i = 0; ; i++){
    // 値が空のとき
    if(table[hash].tx_id == -1){
      table[hash].key   = (char*)key;
      table[hash].tx_id = id_count;
      id_count++;
      printf("x : hash = %d, id = %d : %s\n"
             , hash, table[hash].tx_id, table[hash].key);
      return table[hash].tx_id;
</font></pre>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>


<div class="slide">
<h1>ハッシュテーブル</h1>
<pre><font size="3" color="#000000">
    // 検索keyが一致したとき
    }else if(strcmp(key, table[hash].key) == 0 && table[hash].tx_id != -1){
      printf("o : hash = %d, id = %d : %s\n"
             , hash, table[hash].tx_id, table[hash].key);
      return table[hash].tx_id;
    }
    printf("hash = %d  =>  ", hash);
    hash = ((37*hash)^(11*i)) % N;
    printf("%d\n", hash);
  }
}
</font></pre>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>
-->
<!--
<div class="slide">
<h1></h1>
<ul>
<li></li>
</ul>
<div class="handout">
[any material that should appear in print but not on the slide]
</div>
</div>
-->

</div>

</body>
</html>