Enviar pesquisa
Carregar
シェーダープログラムを無限に生成するガチャつくってみた PCD2019
•
Transferir como PPTX, PDF
•
3 gostaram
•
1,323 visualizações
Masaru Mizuochi
Seguir
PCD2019
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 26
Baixar agora
Recomendados
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
Masaru Mizuochi
JavaScript Hackathon for Students
JavaScript Hackathon for Students
Takumi Ohashi
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみよう
Ryota Shiroguchi
Arctic.js
Arctic.js
chikathreesix
Html canvas shooting_and_performanceup
Html canvas shooting_and_performanceup
Yohei Munesada
Canvas de shooting 制作のポイント
Canvas de shooting 制作のポイント
Yohei Munesada
Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)
Ryuma Tsukano
d3jsハンズオン @E2D3ハッカソン
d3jsハンズオン @E2D3ハッカソン
圭輔 大曽根
Recomendados
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
Masaru Mizuochi
JavaScript Hackathon for Students
JavaScript Hackathon for Students
Takumi Ohashi
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみよう
Ryota Shiroguchi
Arctic.js
Arctic.js
chikathreesix
Html canvas shooting_and_performanceup
Html canvas shooting_and_performanceup
Yohei Munesada
Canvas de shooting 制作のポイント
Canvas de shooting 制作のポイント
Yohei Munesada
Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)
Ryuma Tsukano
d3jsハンズオン @E2D3ハッカソン
d3jsハンズオン @E2D3ハッカソン
圭輔 大曽根
20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド
Ryuichi Ueda
Squirrel
Squirrel
melpon
20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド
Ryuichi Ueda
20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド
Ryuichi Ueda
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
Ryuichi Ueda
20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会
Ryuichi Ueda
画像を縮小するお話
画像を縮小するお話
technocat
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
Ryota Shiroguchi
Osakijs #01 「enchant.jsハンズオン資料」
Osakijs #01 「enchant.jsハンズオン資料」
Yusuke HIDESHIMA
AngularJSでデータビジュアライゼーションがしたい
AngularJSでデータビジュアライゼーションがしたい
Yosuke Onoue
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
Noritada Shimizu
How to make Inn-fighting dice
How to make Inn-fighting dice
Masujima Ryohei
三角関係になったときの対処法
三角関係になったときの対処法
Yachiyo Suzuki
2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38
Ryuichi Ueda
Processing workshop v3.0
Processing workshop v3.0
Wataru Kani
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
furutsuka
Mais conteúdo relacionado
Mais procurados
20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド
Ryuichi Ueda
Squirrel
Squirrel
melpon
20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド
Ryuichi Ueda
20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド
Ryuichi Ueda
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
Ryuichi Ueda
20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会
Ryuichi Ueda
画像を縮小するお話
画像を縮小するお話
technocat
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
Ryota Shiroguchi
Osakijs #01 「enchant.jsハンズオン資料」
Osakijs #01 「enchant.jsハンズオン資料」
Yusuke HIDESHIMA
AngularJSでデータビジュアライゼーションがしたい
AngularJSでデータビジュアライゼーションがしたい
Yosuke Onoue
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
Noritada Shimizu
How to make Inn-fighting dice
How to make Inn-fighting dice
Masujima Ryohei
三角関係になったときの対処法
三角関係になったときの対処法
Yachiyo Suzuki
2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38
Ryuichi Ueda
Processing workshop v3.0
Processing workshop v3.0
Wataru Kani
Mais procurados
(15)
20131222 第8回シェル芸勉強会スライド
20131222 第8回シェル芸勉強会スライド
Squirrel
Squirrel
20130622第5回シェル芸勉強会スライド
20130622第5回シェル芸勉強会スライド
20130413シェル芸勉強会スライド
20130413シェル芸勉強会スライド
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130824 第六回チャンピオンシップシェル芸ランナー勉強会 in LLまつり
20130216 シェル芸爆破デスマッチ勉強会
20130216 シェル芸爆破デスマッチ勉強会
画像を縮小するお話
画像を縮小するお話
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
Osakijs #01 「enchant.jsハンズオン資料」
Osakijs #01 「enchant.jsハンズオン資料」
AngularJSでデータビジュアライゼーションがしたい
AngularJSでデータビジュアライゼーションがしたい
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
How to make Inn-fighting dice
How to make Inn-fighting dice
三角関係になったときの対処法
三角関係になったときの対処法
2012年10月27日 Hbstudy#38
2012年10月27日 Hbstudy#38
Processing workshop v3.0
Processing workshop v3.0
Último
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
furutsuka
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
Último
(9)
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
シェーダープログラムを無限に生成するガチャつくってみた PCD2019
1.
シェーダープログラムを無限に生成するガチャつくってみた Masaru Mizuochi @_mizumasa Processing Community
Day 2019 LT
2.
@_mizumasa
3.
What‘s シェーダー ガチャ !!??
4.
5.
CharActor キャラクター 文字 人?
6.
フラグメントシェーダーの構成 fragColor = vec4( abs(
sin( cos( time + 3. * uv.y ) * 2. * uv.x + time)), abs( cos( sin( time + 2. * uv.x ) * 3. * uv.y + time)), 1.0, 1.0);
7.
生成モデル 7 fragColor = vec4( abs(□),abs(□),1.0,1.0); ↓ □
= sin(□) ↓ □ = □ + time shader code model sin( cos( time + 3. * uv.y ) ) ↓ (cos(□) → log( cos(□) )) sin( log( cos( time + 3. * uv.y ) ) ) code extension a section of the code in Figure 1 sin( cos( time + 3. * uv.y ) ) → sin( sin( time + 3. * uv.x ) ) a section of another code tan( sin( uv.x + 4. * log( time ) ) ) → tan( cos( uv.y + 4. * log( time ) ) ) code exchange
8.
一瞬でこれぐらいのコードが書ける 8
9.
自分で書かなくてすむ (そのシステムを組むのには2000行書いてるけど) 9 もっと賢く できるのでは?
10.
強化学習でやってみる 10 fragColor = vec4( abs(□),abs(□),1.0,1.0); ↓ □
= sin(□) ↓ □ = □ + time 行動: 式の生成時に関数を選ぶ 行動: 式の生成時に関数を選ぶ 評価: 生成された映像の複雑さ ≒ PNG圧縮した時のサイズ
11.
強化学習って? 11 行動した結果の報酬を見て、学習する
12.
chainerRLを使うと100行で強化学習が書ける 12 import chainer, chainerrl import
chainer.functions as F import chainer.links as L import numpy as np class Board(): def reset(self): self.boardW, self.boardH= (4,6) self.actNum = 3 #0:left 1:stay 2:right self.obs = np.array([0] * 5, dtype=np.float32) self.barPosX = np.random.randint(0,self.boardW) self.ballPosX = np.random.randint(0,self.boardW) self.ballPosY = 0 self.ballSpeedX = np.random.choice([-1,1]) self.ballSpeedY = 1 self.setObs() self.count = 0 self.reward,self.done, self.info = 0, False, 0 returnself.obs def step(self, action): self.barPosX = np.clip(self.barPosX + action - 1, 0, self.boardW- 1) if (self.ballPosX == (self.boardW- 1)) and (self.ballSpeedX== 1): self.ballSpeedX *= -1 if (self.ballPosX == 0) and (self.ballSpeedX == -1): self.ballSpeedX*= -1 if (self.ballPosY == 0) and (self.ballSpeedY== -1): self.ballSpeedY*= -1 if (self.ballPosY == (self.boardH- 2)) and (self.ballSpeedY== 1) and (self.ballPosX== self.barPosX):self.ballSpeedY*= -1 self.ballPosX += self.ballSpeedX self.ballPosY += self.ballSpeedY self.setObs() self.check() returnself.obs, self.reward, self.done,self.info def setObs(self): self.obs[0]= self.barPosX self.obs[1]= self.ballPosX self.obs[2]= self.ballPosY self.obs[3]= self.ballSpeedX self.obs[4]= self.ballSpeedY def check(self): self.reward = 1 if ( self.ballPosY== (self.boardH- 1) ): #ball miss self.reward= -1 self.done = True def get_random(self): self.count += 1 returnnp.random.randint(0,self.actNum) def show(self): board= np.zeros((self.boardH,self.boardW),dtype="uint8") board[self.boardH- 1, self.barPosX]+= 2 #barpos board[self.ballPosY, self.ballPosX]+= 1 #ballpos print board class QFunction(chainer.Chain): def __init__(self,obs_size,n_actions, n_hidden_channels=50): super(QFunction,self).__init__() withself.init_scope(): self.l0 = L.Linear(obs_size, n_hidden_channels) self.l1 = L.Linear(n_hidden_channels,n_hidden_channels) self.l2 = L.Linear(n_hidden_channels,n_actions) def __call__(self,x, test=False): h = F.tanh(self.l0(x)) h = F.tanh(self.l1(h)) returnchainerrl.action_value.DiscreteActionValue(self.l2(h)) if __name__ == '__main__': env = Board() obs = env.reset() q_func = QFunction(len(obs), env.actNum) optimizer= chainer.optimizers.Adam(eps=1e-2) optimizer.setup(q_func) explorer= chainerrl.explorers.ConstantEpsilonGreedy( epsilon=0.3,random_action_func=env.get_random) replay_buffer = chainerrl.replay_buffer.ReplayBuffer(capacity=10 ** 6) phi = lambdax: x.astype(np.float32,copy=False) agent = chainerrl.agents.DoubleDQN( q_func, optimizer, replay_buffer, 0.95, explorer, replay_start_size=500, update_interval=1, target_update_interval=100, phi=phi) n_episodes = 2000 max_episode_len = 20 for i in range(n_episodes): obs= env.reset() reward = 0 done= False R = 0 # return (sum of rewards) t = 0 # timestep whilenot done and t < max_episode_len: action = agent.act_and_train(obs.copy(),reward) obs, reward, done,_ = env.step(action) R += reward t += 1 print('trainepisode:', i,'R:', R,'count:',env.count,'step:',t,'statistics:', agent.get_statistics()) agent.stop_episode_and_train(obs.copy(),reward,done) obs = env.reset() done = False R = 0 whilenot done and R < 400: action = agent.act(obs) obs, r, done, _ = env.step(action) R += r env.show() print('testepisodeR:', R) agent.stop_episode() agent.save('dqn') 落ちないように行動を選択 100行で始める深層強化学習 (0から壁打ちゲーム) としてQiitaにまとめました https://qiita.com/mizumasa/items/86204211581336f412ef
13.
シェダー生成は学習できるか? 13 複雑になった
14.
名刺デザイン100パターンできた 14
15.
15 アートイベント 会場デザイン 御殿山地区 東京マリオットホテル 地域と教育 テクノロジー体験
16.
16 なぜつくるのか
17.
人間の創造性はどこへ向かう? 17The Power of
PowerPoint - thepopp.com
18.
Creative Codingの歴史(田所さんの資料より) 18The Power
of PowerPoint - thepopp.com
19.
Creative Codingの歴史(田所さんの資料より) 19The Power
of PowerPoint - thepopp.com Hyper media / Web Game 3D Graphics Sound / Music Sound / Music Sketch
20.
Creative Codingの歴史(田所さんの資料より) 20The Power
of PowerPoint - thepopp.com Hyper media / Web Game 3D Graphics Sound / Music Sound / Music Sketch ????
21.
21 Grow + Group
22.
ジェネラティブ、アルゴリズミックデザイン 22The Power of
PowerPoint - thepopp.com Autodesk, Houdiniといったツール デザイン、プロダクト、建築に広 がる
23.
人工生命 ライフゲームやBoidsモデル 23The Power
of PowerPoint - thepopp.com
24.
24 種の多様性そのものを デザインとみる
25.
数式が作り出す個性 = CharActor
26.
26 遺伝子のように解釈されるコード 個と群 多様性が生む美しさ それは生命そのものかもしれない
Baixar agora