1. normalize.fm
  2. 032. たゆまぬ努力とキャッチ..
2022-10-18 1:29:36

032. たゆまぬ努力とキャッチアップ

@gam0022 さん(KLab株式会社 所属)をお迎えして、初めてイベントに登壇しいろんな意味で人生が転換した話、登壇者という立場で他人の人生にも影響を与えていた話、仕事やプライベートで活用している Unity の話、モバイル・ハイエンド・最新機能などのトピック、また新しい技術のキャッチアップの大変さの話、レイトレ合宿に参加している話、レイトレの高速化テクニック、とてもレベルの高いレイトレ合宿参加者のみなさんについてなどお話しました。


* doxas 氏の出会いと初めてのイベント登壇

* イベント登壇が一種人生の転換点だった

* スクールの講師として誰かの人生に及ぼしていた影響

* 最近のお仕事の話

* Unity で注目のトピックや使っている機能の話

* ウェブとも共通する部分があるモバイルゲーム開発

* 一方でハイエンドな環境向けの開発の話

* ノードベースで構築できる Shader Graph

* ガチ勢が集うレイトレ合宿

* 年々厳しくなるレギュレーション

* レイトレの高速化4つのポイント

* 驚くべき実装力を持つ参加者たち

* KLab株式会社

* memoRANDOM

* gam0022.net


## show notes


* 仕事としての開発と、趣味としての開発

* doxas さんと初めて会ったときの話

* レイトレ合宿

* Unity のレンダリングパイプライン



00:00
はい、始まりました。ノーマライズFMの今日は第32回です。
はい、第32回ですね。ちょっと1ヶ月ぐらい時間が空いちゃったんですけれども、
イベント登壇とかお仕事とか色々ありまして、ちょっとね、間が空いてしまいましたが、
今日はね、久しぶりの収録なんで、私も緊張してるんですけども、頑張って収録やっていきたいと思います。
はい、で今日のゲストなんですけれども、本日はですね、ちょっとあのWebのフロントエンドとは少しね、
違う畑のゲストが今日は来てくれていまして、クラブに所属されている細田さんに今日はゲストに来ていただいています。細田さん今日はよろしくお願いします。
よろしくお願いします。
はい、えーとね、ちょっとあのインターネット上ではね、TwitterとかではGAM0022っていうアカウントなんで、
そっちの方がもしかしたらね、馴染みが深いっていう人もいるかもしれないですが、
えーと今日はね、久しぶりに私も、こうやってオンラインではあるんですけれども、対面で話すの久しぶりなのでね、
最近の近況なども含めて色々お話を聞いていけたらいいかなと思っておりますので、早速始めていきたいと思います。
はい、じゃあ早速なんですけれども、細田さんの方からまずは簡単に自己紹介をお願いします。
はい、えーとこんにちは。クラブ株式会社の細田です。クラブではグラフィックエンジニアをしています。
インターネット上ではGAM0022っていうハンドルネームで活動しています。
クラブ株式会社について簡単に説明をすると、モバイルゲームを開発運営している会社です。
いわゆるスマートフォン向けにソーシャルゲームを作っている会社になります。
クラブではほとんどのゲームタイトルがUnityに移行しているので、仕事でUnityを使うことがほとんどです。
えーとまた趣味で、ShaderやRaymarchingを使ったグラフィックプログラミングをしています。
デモシティのイベントである東京デムフェストなど、デモパーティーにも定期的に参加してデモ作品のエントリーをしています。
去年の話になってしまうんですけども、ET Game Programming Bible Second Generationという書籍を
教長に出筆したんですけども、そこでRaymarchingの書も担当しました。
はいえーと、このあった方ですかね。よろしくお願いします。
よろしくお願いします。
結構、もう名前を知っている人も知らない人もいらっしゃると思うんですけど、
03:04
ちょっと前だと、Webの世界でいうと、結構3JSを使ってShaderを駆使した実装とか、
あとは紹介記事、解説記事みたいなのも書いてたので、Webの界隈でももしかしたら名前知ってるよっていう人もいるかもしれないですし、
最近だと、今紹介で、自己紹介であったような感じで、結構Unity系の出版、出版というかこれどういうものなんだっけ?
えーとですね、これは同人誌とかじゃなくて、ボーンデジタルさんから出てる商業誌なんですけど、
なんか、一応ターゲットとしては、Unity中級者以上をターゲットにしたようなゲーム開発の本で、
特徴者は結構著者が多くて、なんか20人ぐらいいて、結構トピックもそれぞれの専門分野について、
結構尖った記事が多いような感じの書籍になってますね。
結構分厚いやつだよね、これ。
めちゃくちゃ分厚いですね。
そうだよね、なんか俺、多分これの1冊目のやつを俺多分持ってて、
で、セカンドジェネレーション版はちょっと持ってないんだけど、とにかくなんかあのドンキみたいなやつだなっていうイメージがある。
確かなんか1キロ超えてるみたいな、なんか出版社の人も計測できないみたいなこと言ってましたよね。
うん、そうだよね。
測りで測れなくて1キロまでしか。
はいはいはい。
で、その書籍の中のRaymarchingが使っている章があって、そこを担当されてるみたいな感じってことですよね。
厳密に言うとRaymarchingの話とあと、Unityのタイムラインっていう映像制作をするような機能があるんですけど、その2つを担当しました。
だから最近だとこういう個人の活動も含めて結構Unityよりというか、Unityを中心にいろいろ発信したり、お仕事したりしているみたいな感じってことですよね。
ですね、最近やっぱりUnityが多いですね。
なるほど、俺と細田君の一番最初の出会いの部分で言うと、確か多分俺の方からイベントに出ませんかみたいなのを言ったんだっけ最初は。
そうですね、2016年のバレンタインとかにGLSLの勉強会があったんですけど。
はいはいはい、やったやった。やりました。
GLSLシェーダーテクニック勉強会っていうのがバレンタインで。
はいはいはい。
多分そこでDocSasさんに誘われたのが、初めてお会いしたきっかけですね。
そうだね、当時確か声をかけた動機というか、なぜ声をかけたかで言うと、確か当時は結構3GSで宝石的なものをレンダリングするようなやつとかを、確かこう書いて、解説記事かなんかを公開されたりしていて、
06:10
この人はすごいなと思って、ちょっと出てもらえませんかみたいなのを多分俺の方から言ったんじゃなかったかなと思いますね、多分当時は。
だと思いますね。
だいぶ前だからもうなんかその当時の初めて会った時のこととかちょっと覚えてないけど、でも初めての登壇経験みたいな感じだったの?その時は。
そうですね、一応大学は出てるので、卒業研究の発表とか学科発表とかは経験はあったんですけど、ああいうテック系のイベントで、しかもあんなに、確か100人以上いたと思うんですけど、
ああいう大きな場で喋るのは初めてだったんで、当時は結構緊張したかなと思いますね。
いや俺はちょっと詳細も忘れちゃったけど、確かなんかね、あの「I love GLSL」みたいな印字されたチロルチョコ作ったりとか、
そうですね。
いろいろ準備して、そのチロルチョコのオリジナルデザインが作れるサービスを使って、あの「I love GLSL」って書いてあるラベルを吸ってもらって、でそれをみんなに配ってみたいな感じでやった記憶があるんだけど。
あ、そうなの、ちょうどね、バレンタインで開催したんですよね、2月10日に。
そうそうそう、それでなんかラップトップの上にチョコレート置いといたら溶けちまったみたいなやつとか、トラブルがちょっとあったりして、
まあそれは狙ったトラブルだったのかもしれないんだけど、あの「GPUがスプーン回ってるからもう熱々でチョコも溶けちゃうぜ」みたいなね、なんかそんなイベントやったのが、でも結構前だよね、これ多分。
7年前。
7年前か。
2016年なのでだったんですよね、コンパスのページ見たら。
うーん、そうだね。
でも今思うとこれが結構自分の転換点でしたね、本当に。
ああ、いやそういう風に言ってもらえたらなんか誘った方としては嬉しいけども。
多分、なんだろうな、そもそも割とグラフィックスプログラミングをマジでやったのも独作さんのおかげなんですよね、今思うと。
そうなん?それをなんか初めて聞いた気がするけど。
一応研究室はグラフィックス系だったんですけども、結局研究室1年くらいしかいなかったから、そんなにしっかり研究してるわけじゃなくて、
あとなんか、一応分野的にはシェーディングとかじゃなくて、モデリング系、メッシュを色々組み立てるというか、そういう感じの研究だったので、
09:04
シェーディングアウトが全然触ってなかったんですけど、
同期の人が、クラブの会社の同期の人がWGLの記事を買ってて、そこで独作さんのレイマーチングの記事を見て、
これ面白そうだなと思ってやったのが、今思うとその辺からシェーディングプログラミングというか、グラフィックスプログラミングをちゃんとやったような感じです、今思うと。
なんかそれはちょっと初めて聞いたんだけど、そんな感じだったんだ。なんか俺の中ではもう結構、ガム君っていうと割と完成された状態から見てたような気がしたけど、
なんかそんな、そんななんかこぼれ話があったんだね、実は。
そうですね、なんか多分自分、かわいい特徴者だと思うんですけど、シェーダープログラミングの最初がレイマーチングを実装するっていう、WGLTの記事見ながら。
いやでもその返りは多分今も結構見え隠れしてるというか、やっぱ興味のベクトルがそっちなんだろうね、やっぱりね。
ついでに言うと、あの、先ほどなんか自己紹介で東京デンフェスト出てますみたいな話したと思うんですけど、
東京デンフェストを最初に知ったのも、そのさっき言ったGLSLの勉強会の時に多分ドクサスさんが東京デンフェストをやりま、なんかっていうイベントを紹介してたのが。
うんうん。
で、多分派手に認知してたような気がするんで。
今思ったらね、本当にあれ、すごい転換点だったんですよね、自分の人生の中で。
なんか全然そんなつもりはなかったけど、意外とドクサスチュードレンの一員だったんだね、じゃあ君は。
いや本当に、本当にそうだった。
全然知らなかったわ、そんな話。
なんかもう最初から天才っぽい感じで見てたから、まさかそんな感じの経緯があったっていうのは。
でも確かに言われてみると、なんか急にその辺から露出が増えたっていうか、いろんなことがアウトプットとか活動が増えてったような感じはするよね、確かにね。
イベントに参加したりとか、解説記事書いたりとか、ウェブに限らずオンラインでもオフラインでも、なんか結構その辺りから確かにいろいろ活動していく、ガム君のその活動が結構増えてったっていうのは確かにあるかもしれないね。
なるほどな。
本当にありがとうございました。
いや俺ちょっと全然そこ意識してなかったから、なんかちょっとびっくりしたわ。
いきなりそんなこと言われたから、ちょっと嬉しい反面びっくり反面みたいな感じになってしまったけども。
なるほどね。
で、その後結構、本当にちょっと俺とまずガム君のその話を最初にちょっとしちゃうんだけども、その後スクールの講師に出てもらったりとかもあったよね。
12:01
なんか急に思い出したんだけど。
ありましたね、ちょっと忘れてましたけど。
そう、なんか俺もちょっと全然忘れてたんだけど、っていうのはさ、こないだのノーマライズFMの、何回かちょっと忘れちゃったんだけど、あのシフトブレインっていうウェブの制作会社の佐藤君っていう子が、そのたまたま参加したGLSLスクールで、ガム君のやってくれたプラスワン講義、まあその互い授業的なプラスワン講義のやつを聞かなかったら全然違う人生だったって言ってたのね、佐藤君が。
俺の本講義として俺が教えている内容が難しすぎて、これ詰んだわってなってたらしいの、佐藤君の中で。こんな難しいことできねえよってなってて、そこでガム君が3JSでシェーダー使ってこんな表現できるぜみたいなのをやってくれたんだよ。その3JSと組み合わせてやるみたいな感じの話をしてくれたんだよ、確か当時。
3JSでポストプロセスを作る方法みたいなのを。
そうそうそうそう。でそれが、佐藤君にとってもう典型だったらしいの。これだっていう風になったらしくって。
嬉しいですね。
でそれがあったおかげで今の僕がありますみたいな感じのこと言ってて、それを聞いた時にいやすげえなと思って、なんかスクールとかそういうなんか俺がやってきた活動が誰かの人生にすごい影響を及ぼしてるんだなっていうのも思ったし、なんかこの話ガム君本当知ってるのかなみたいな感じで思って、
佐藤君に聞いたら、いやもちろんお礼は言ったんですけどもしかしたら昔のことなんで覚えてないかもしれないですねって言ってたけど。
そうですね。
一番のゲストで、ノーマライズFMにゲストに出るので、佐藤さんの回とかはもちろん聞いたので、その時にそうだったんだって思ってみながら聞いたんですけど。ちょっと正直に言うと結構昔過ぎてあんまり怖いと思いたいんですけど。
本当そうだよね。
佐藤さんが、DLSSスクールの休憩中に佐藤さんがやってきて、ガラスが割れたような。
はいはいはい。
多分なんだっけ。
カワノっていうブランド、ブランドっていうかショップのサイトだね。
カワノのサイトの途中みたいなのを見せていただいたんで、それに対してアドバイスだったのかな、ちょっと落ちたような記憶が何回かあるので、あの時の方が佐藤さんなんだっていうのをちょっと思い出しながら聞いてましたね。
正直ね、やっぱ名前と顔とかは覚えられないし、結構時間も経っちゃってるしね、あれだと思うんだけど、でも本当にめちゃくちゃその、なんだろう、収録外のところで喋ってた時も、もう本当にあれがなかったら終わってましたって言ってたよ。
15:17
そうなんですね。
めちゃくちゃ感謝されてたよ、本当に。
ありがとうございます。そんな人生に嬉しいです。
伝えなきゃと思って、もうこれは伝えなきゃいけないからちょっと、ガム君をゲストに呼ぶしかないなと思って、今回呼んでるっていうのもある、ちょっと。
そうなんですね。
なんか、やっぱりなんだろう、スクールみたいにさ、一対一対で喋ってると、相手側が何を受け取ってくれたかって喋ってる側にはほとんど伝わってこないっていうか、見えないから、
あの時の経験があったからこんな風になれてます、ありがとうございますみたいなのって、触れられる経験っていうか、奇跡的な出会いがない限りそういう、確率論的にかなり難しいっていうかさ、
そういう話を聞けること自体がかなり敬語だから、ぜひ伝えないとなーとは思ってたんだけどね。
本当にめちゃくちゃ感謝してますよ、佐藤君が。
いやー、ありがとうございます。たぶんそんな大した抗議はしないと思いますけど、そう言っていただけるとすごい嬉しいなと思います。
いや、当時はさ、まだ俺が3JS全くわかってなくってさ、ネイティブなWebGLはもう普通に書けるんだけど、3JS的な流儀は全くわかってないみたいな、当時はそういう感じだったから、
よもつさんだったりとか、ガム君みたいなこう、ある程度3JS触ってきましたよっていう人たちをゲストに呼んで話してもらうしか、その3JSを扱う方法がなかったんだけど、
最近はね、さすがに自分でもやってるからわかるんだけどさ、だから当時はね、本当に。
他にもいたんだろうなとは思うよ。たぶんそのやっぱりネイティブなWebGLがりがり書かされるのってなんか最初はすごい大変だからさ、
たぶんその、ガム君の内容が刺さった人たちはきっと他にもいただろうなとは思うけどね。
確かに確かに。でもそうですよね、本当に3JSってやっぱり、ネイティブのWebGL結構難しいんですよね。
結構難しいよね。
だからその、なんだろう、それこそさ、ちゃんとOpenGLとかDirectXとかさ、普通にC++とかで書いてきましたみたいな人だったらね、話は別だと思うんだけど、
やっぱWebの開発しかやったことない人がいきなりやるにはかなり難しいやつだからさ、
たぶんその3JS使ってPostFXでこんなかっこいい映画出せますよっていう、ガム君の話がね、たぶんめっちゃ刺さった人がいっぱいいたんだろうなっていうのはね、なんとなく思いますね。
18:01
最近はでもどうな、ほとんどもうUnity1本って感じ?最近だと。
そうですね、最近は本当に仕事も、趣味はわりとUnityが多くてですね、仕事はUnityでモバイルゲームを作ってるんですけども、
今はもう、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと、ちょっと
Unity1本で作って、Unity2本で作って、Unity3本で作って、Unity4本で作って、Unity5本で作って、Unity6本で作って、Unity7本で作って、Unity8本で作って、Unity9本で作って、Unity10本で作って、Unity11本で作って、Unity12本で作って、Unity13本で作って、Unity14本で作って、Unity15本で作って、Unity16本で作って、Unity17本で作って、Unity18本で作って、Unity19本で作って、Unity19本で作って、Unity19本で作って、Unity19本で作って、Unity19本で作って、Unity19本で作って、Unity19本で作って、Unity19本で作って、Unity19本で作って、Unity19
例えば、絵としてこういう絵作りがしたいんですよみたいな話の相談を受けたときに、既存の機能でどうにかする、Unityの既存の機能でどうにかするっていうよりは結構シェーダーを書いたりすることが多いみたいな感じ?
そうですね、結構シェーダーもいろんなタイプがあって、
エフェクト用のシェーダーだったら、割とこう、なんか汎用的なUberシェーダーを作って、それでやっていただくみたいなのが多いんですけど、
どうしてもこう、なんだろうな、Unityの標準機能だとうまくできないようなものとか、
例えばアイドルゲームだと、ペンライトというか、ペンライトをたくさん振ってるとかあると思うんですけど、
そういうのって、Unityのゲームオブジェクトをいっぱい配置するって方法だと、どうしてもパフォーマンス的にモバイル端末で動かないので、
そこを頂点シェーダーとかでうまくペンライトのフルモーションを実装するとか、
あとは、ボリュームエンダリング、大分のスモークみたいなのとか、そういうのってUnityの標準の機能だとうまく動かないといけなかったりするので、
そこだけは専用のシェーダーを作ったりとか、そういうちょっとUnity標準の機能でできないような部分に関しては、
カスタムシェーダーとかでうまく実装する必要があったりするので、そういうところは結構やる感じですね。
その辺もアーティストさんがこういうのやりたいんですけどみたいなのをヘアリングして、うまく調整していくみたいな感じの仕事になりますね。
21:05
なるほどね。なんかWebでいうと、Webも結構実装する開発者さんとデザイナーさんが分かれていて、
両方できる変態的な人も中にはいるんだけども、基本的には分業される場合が多くて、
結構デザイナーさんがこうしたいとか、寒風を作ってくれたりとかして、それに対して開発者ができるできないとか、
あるいはこういうふうにした方がもっといいんじゃないですかみたいなのを各社それぞれの現場でやってると思うんだけど、
なんかそれと似たような感じなのかもしれないね。
そうですね。やっぱり、多分、芸能の場合って本当にコンテンツの物量がすごい多いんで、
基本的に一人じゃ無理というか、結構分業はしてますよね。分業どころかは割と社内だけじゃなくて、本当に社外の人にも作ってもらったりとかあるんで、
本当に職種だけじゃなくて、本当に他の会社とかとも連携したりとか、そういうような規模になってきますかね。
なんかどうなのか、Unityを色々仕事で普段から使ってると思うんだけど、
Unity周りのグラフィックスに関して結構最近注目のトピックだったりとか、
近年結構こういう感じでやってますよ、みたいなのとかあったりする?
そうですね。Unityのグラフィックスだと、Unity 2018からScriptable Render Pipelineというのが登場してるんですけど、
Scriptableといっている名前の通り、ユーザー側でカスタマイズ可能なレンダリングパイプラインというのが登場してますね。
登場したのは2018なので、結構最近の話ではないんですけども、ちゃんと安定して使えるようになったのは最近というところでちょっと触れていますね。
なるほどね。
結構なんか、ちょっと俺、ごめんね、終わって入っちゃうんだけど、あんまりよくわかんないんだけど、Unityって結構どうなの?破壊的な変更とか、
気がついたら使えなくなってるみたいなのとか、そういうのもあったりするもんなの?
基本的には結構、Unityの場合は割と開発中でもどんどんイケイケでリリースしちゃうので、
さっき言った、Scriptable Render Pipelineとかもそうなんですけど、結構割といろんな破壊的変更があって、今の状態に落ち着いているような感じです。
なるほどね。Scriptable Render Pipelineが出てきた経緯というか、どういう需要に対してその機能が出てきたという感じなの?
もともとUnityのRender Pipelineはあって、今これはBuild in Render Pipelineと言われてるものがもともとあったんですけど、
24:06
これの課題としては、Unityって本当にすごいいろんなプラットフォームをサポートしていて、
モバイル端末もサポートしてるし、Nintendo SwitchとかFull Sessionとかコンソールゲームも対応してるし、
本当にAndroidもiOSも対応してるしっていう感じで、本当にすごいいろんなプラットフォームをサポートしていて、
そのプラットフォームのスペックとかも全然違うわけなんで、グラフィックスAPIとかもそうですけど、
一つのRender Pipeline全部をカバーするのって難しいよねみたいなところで、
多分Render Pipelineを作り直そうみたいなキューインが発生したのかなというふうに聞いてますね。
で、その中で、スクリプタブルっていうぐらいだから、結構スクリプトを書くみたいな感じなの。
Render Pipelineって俺のイメージだと結構ブロック的にこれをやるステージ、これをやるステージみたいなのがあって、
それが繊維図みたいに矢印でパイプラインがこっちに流れていきますよみたいなのが繋がってるようなイメージなんだけど、
その一部をシェーダーとは別にスクリプトでいろいろ制御できるみたいな感じなの?
まさにそうですね。本当にC#のコードで描画のパスとかを定義できるようになってるんですけど、
もちろん、どうしようかな。
で、ちょっとスクリプタブルRender Pipelineの全体像みたいなのを説明すると、
スクリプタブルRender Pipelineってちょっと長いんで、SRPってこれがちょっと用意すると思うんですけど、
SRPだと、もちろん自分でRender Pipelineも定義できるんですけど、
一応、ET標準で2種類のSRP実装したレンダリングパイプラインがあって、
テンプレみたいなのがあるのね。
テンプレがあるんです。それをフォークして使ってもいいし、そのまま使ってもいいしって感じなんですけど、
テンプレとが2種類あって、URPとHRPっていう2種類のSRPのテンプレートがあります。
URPはUniversal Render Pipelineの略なんですけど、結構Universalって言ってるくらいなんで、
いろんなプラットフォームで動きますというか、どちらかというとターゲットとしてはモバイルみたいなスペックの低いプラットフォームも動くような、
それともう一つあるのがHRPっていうので、これはハイディフェニッションレンダーパイプラインの略なんですけど、
ハイエンドPCとかプレイステーションパイプとか、そういうようなスペックの高いようなプラットフォームがターゲットになってますね。
なるほど。それを使ってもいいし使わなくてもいいんだけど、ある程度必要最低限のものがそこに入っているみたいな感じで、
そこにさらに自分らでスクリプティングを加えていくみたいな感じか。
27:03
一応ちょっと補足すると、URP上にさらにRenderer Futureっていうのがあって、これはスクリプタルオブジェクトっていって、
汎用的にデータをシリアイズできるような、要するに中身JSONみたいなものがあるんですけど、
なるほど。スクリプタルオブジェクトなんですけど、スクリプタルオブジェクトでRendererのパソコンをGUIで追加できるようになってますね。
なので、URP使っていればコード書かなくても、ある程度の典型というか、簡単なカスタマイズはコード書かなくてもできるようになっているんですよね。
特殊なことをしたかったら、もうURPをフォークしてコードを書く必要があるみたいな感じになりますね。
なんかもうまさに仕事ではそういうことをやっているような感じ?
そうですね。前まで携わったプロジェクトはBuilt-in Data Pipelineだったんですけど、
新規のプロジェクトだとURPを使おうみたいな感じになっていて、そこではやっぱりURPのRenderer Futureとかを実装して、欲しい表現を目指すみたいなことが仕事をしていますね。
結構なんか、いろいろ手厚い部分もありつつで、でも結局やっぱりアーティストさんとかだけだとなかなか完結しない部分をやっぱり開発者がサポートするみたいなのは絶対必要っていう感じですね。
なんか話を聞いている感じだと。
そうですね。まだまだやっぱりこのURPの情報って、多分Unityの情報をインターネットで調べると、多分基本的にBuilt-in Data Pipelineの方が情報出てくるし、
シェーダーもUnlitのシェーダー、ライティングしないようなシェーダーだったら結構そのまま動いたりするんですけど、基本的にシェーダー互換性とかもないから、
なるほどね。
Built-in Data PipelineのシェーダーをURPに持ってこうとすると使えなかったりとか、アセットストアもURP対応じゃないから動かない。URPでは動かないと。
そこは確かにちょっとそうなってくると確かに開発者いないとちょっときつそうな感じはするな確かにね。
アセット突っ込みは動くっていうわけでもないよってなってくると、ちょっとそういう感じでしか改造と的に情報がない人だとちょっと厳しいっていうのありそうだね確かにね。
今は本当に過渡期ですね。多分世の中のプロジェクトも多分どうなんだろうな。
30:00
やっぱりこうURPがちゃんと安定して使えるようになったら1年の話でいいなと思うんで、
多分こうまだまだBuilt-in Data Pipelineでやってるような開発のものがあると思うし、本当に今ちょっとカオスな状態になってます。
ちょっとカオスな状態。
なんかどうなの?ちょっとこれも全然わかんないから想像で聞いちゃうんだけどさ、なんかその結構ゲームのタイトルによってまちまちだとは思うんだけども、
どこら辺の端末までサポートするか問題とかもあったりするんだよねやっぱり。
そうですね。
結構Webだとやっぱさ、どうしてもリンゴのマークの会社から出てるあいつの勢力が強すぎてさ、あいつの勢力が強すぎて、
Safariをサポートしないわけにはいかないんだけど、結構Safariサポートするの大変だったりとかあったりするけど、
それに類似するいろいろな大変さがありそうだなっていう感じがします。なんかUnity関係でも。
そうですね。まあなんかゲーム会社でも基本的にはこう、端末のシェア率みたいなのを見ながら、
ビジネス的な観点からどこまでサポートするべきかみたいなのを多分決めるんですけど、
そうですね。やっぱりモバイルって本当に最近だと、スペックの差がすごいあって、
本当にハイエンドな端末だったらもうPCよりハイエンドだったりする一方で、
海外とかまでシェアを見ていくと、めちゃくちゃスペックの低い端末もあったりするので、
その辺はなんか悩ましい問題だったりしますね。
そうだよね。結構なんか、俺が前に自分のクライアントというか、一緒にやってたウェブデザイナーさんと話したことあるんだけど、
なんかその、やっぱこう、ウェブデザイナーさんだからいいiPhoneを使ってるんだよね。
自分のiPhoneはさ、めちゃくちゃこう、一番最新のiPhoneとかを使ってて、
Pro Maxみたいなやつとかを使ってて、「すぎもさん、めちゃくちゃ今デモ版のやつめっちゃ動いてますよ」ってすごい言ってくれるんだけど、
いやそれ多分ね、その端末だからサクサク動いてるだけですよみたいな。
そこを多分世の中基準履き違えちゃうと、普通に動かない端末多分いっぱいあると思うんで、
ここから最適化必要ですねみたいな話を前にしたことあるんだけど、
やっぱその、地域とか、あとは客層っていうのかな、
どういう客層にリーチしたいかとかによってね、スペックとかもまた変わってくるだろうから、
なんか、御社みたいなこう、モバイルアプリとか作ってる会社はその辺大変そうだなっていうのは、
33:01
まあウェブも同じなんだけどね結局、ウェブも同じなんだけど、なんか大変そうだなっていう風にね、
まあ想像しちゃったりもするね。
やっぱり、なんかハイエンドの端末だったら一番いい品質で届けたいんですけど、
とはいえ低い端末までサポートし上げないと、そもそも売上のパイが減ってしまうので、
そこはこう、なんでしょうね、高い、いい端末だったら最高のものを出しつつも、
ちゃんと、ミドルスケップとかローエンドの端末も動くようにこうフォールバックというか、
したりとかもちろんしてますね。
なんかその辺は、例えばなんかポストエフェクトが発生しないようにするとか、
なんかそういうことをして軽量化するの?
そうですね、まあ本当にいろんなやり方で軽量化するんですけど、
あとですね、ポストエフェクトはオフにしても完全に働きはしないので、
結構オフしやすいので、ポストエフェクトが一番に多分考えるところで、
あとはフレームレートとかですかね、
FPSを下げる?
そうですね、フレームレートとかFPSを下げるっていうのがあったら多分機械的に下げやすいので、
そこはやりやすいところで、あとは何だろうな。
結構Webだとさ、デバイスピクセルレシオが結構クセモンというか、
あれそのままレティナディスプレイとかの返してくるデバイスピクセルレシオの数値をそのまま使っちゃうと、
バキバキの綺麗なレンダリングにはなるんだけど、
めちゃくちゃ重くなっちゃうみたいなとか結構あったりするけど、
そういうのもなんか関係ありそうだね。
そういうのとめちゃくちゃ関係あって、やっぱり本当にモバイル端末ってGPUの性能はそこそこの割に、
本当にめちゃくちゃ解像度がPCより解像度が高いですからね。
解像度めちゃくちゃ高いからね。
だから本当にレティナディスプレイをドットで描画してるとGPUがどうしてもできなくなっちゃうので、
そこはやっぱりもう少し解像度を下げたレンダーテクチャに描画してから引き伸ばして、
UIとかはちゃんとドットバイトって描画するみたいな感じで、
3Dは解像度が低い、UIだけフル解像度みたいな、そういう風になるようにしてますね。
多分他社さんとかでも同じようなクルマになる?
そうだよね、やっぱりその辺はやっぱWebと同じなんだな。
Webも結構そんな感じだもんね。
まずデバイスペキセルレシオみたいなのを見て、さらに何フレームかレンダリングを回してみて、
どれくらい時間かかったかを計測して、FPSを自動的に下げるようにしたりとか、
そういう涙ぐましい仕込みをしたりすることがあるんだけど、そういうところの大変さは。
36:03
でもアプリの場合は切な的ではないというか、Webの場合だと切な的というか、
一回まずは開いてもらって、ある程度見てもらえれば一旦目的は果たしたって言えるかもしれないけど、
モバイルアプリとかになるとアンインストールされてしまったら終わりだから、
その辺よりセンシティブに考えなきゃいけないとかあったりしそうな気もするけどね。
実際はどうなんだろうね。
やってることは同じなんだけど、Webの場合も何度も繰り返し見てもらいたいってなったら、
結局同じことをやらなきゃいけないから、
重いなーって印象を持たれてしまったらそれで使いにくいなーってなってしまったらおしまいだから、
そういう意味では結局同じなのかな。
たぶんその辺のちゃんとサクサク動くかみたいなところがユーザーの継続率とか、
それが結果的にメディア上げとかには影響してくるかなと思いますね。
そうだよねー。Webの場合はだから、ちょっとあれかもね。
WebGL使ってるようなサイトの場合だと、そこまで操作性とかっていうよりは、
見た目の印象を重視してる場合が多いかもしれないけど、
ゲームの場合はその辺全部入りっていうか、
GUIの使いやすさとかも結構、GUIというかインターフェースの部分も使いやすかったり、
リスポンスが早かったりみたいなところも大事だと思うから、
なんかより総合格闘技っぽいっていうか、
なんかいろいろ気にしなきゃいけないのかもしれないね、もしかすると。
そうですねー。
なるほどねー。結構じゃあUnityのレンダリングパイプラインの中身を、
SRPを使ったりしつつ開発したりみたいなのもあると思うんだけど、
他にも、将来こういうところがここ数年重要そうですよ、みたいな、
これから先の機能とかもあったりするんですか、そのUnity周りでいうと。
今までURPの話してきたんですけど、
もう一つはさっき言ったHDRPっていうのがあるんですけど、
これはプレイステとかハイエンドPC向けの機能なんですけど、
これは本当に、結構重たいですよりというか、
ハイエンドPCで動けばいいような機能なんで、
例えばボリュームレンダリングとか、
ディストサイトを入れたりとか、ボリューメトリックフォグとか、
あとは実験的にレートレーシングが入ったりしますね。
そうなんだ。まあでも、そうか。そうだよね。
そういうところに入ってなかったらそもそも結構、
使うの大変になっちゃうもんね、逆に。
ある程度そのUnityの側でこういう感じで使えますよっていうのを、
ある程度示してくれないと、なかなか導入するの大変そうだもんね。
そうですね。まあでも結構簡単に、
ある程度簡単にレートレーシングが使えるようになってて、
具体的に言うと、ただレートレーシングって言っても、
39:03
ハイブリッドレートレーシングってやつなんで、
全部をレートレーシングで描画すると、
さすがにハードウェアアクセラレートされてるようなGPUだとしても、
全部レートレーシングが必要なので、
一部分だけレートレーシングを使うみたいな感じになってて。
なんかそれが結構あれだよね、そのUnityに限らず、
今の世代だとそれがトレンドというか、
普通にそういう風にやるのが、今は有意義な使い方みたいな感じになってるよね。
そうですね。最近のタイトルだと反射だけレートレーシングするとか、
そうすると今までのスクリーンスペースリフレクションだとできなかったような、
例えばなんだろうな、後ろに鏡があって、
スクリーンスペースだと後ろ姿っていうのは要するに、
今やる画面地にはないので、
そもそも画面に描画されてない情報がスクリーンスペースリフレクションだと取れないんですけど、
ちゃんとワールドスペースでレートレーシングすることで、
映ってない、例えばスカートの中とか、そういうのもちゃんと。
スカートの中とか。
SSRだと、
言ってることはわかる。
そもそも今のカメラから撮れないとこは撮れないので。
いやー、そうだね。
SSR、そもそもちょっとその、
SSRという言葉が通じない人が聞いてるかもしれないから、
ちょっとだけ補足すると、SSR、スクリーンスペースリフレクションっていうのは、
スクリーンスペースっていうぐらいなので、
1回レンダリングをしてしまって、
そのレンダリングしたスクリーンに映っている、2次元のビットマップ的なものから、
リフレクション、つまり反射を疑似的に、
そのスクリーンの情報から再現するみたいなのがSSRっていう機能で、
実際に背中の部分が画面に描かれるわけじゃないから、
SSRだと背中が見えませんよねみたいなことだよね要するに。
まさにそういうことですね。
結構SSRもね、
なんかもう結構コンシューマータイトルとかでは、
まあありかし当たり前なのかもしれないけど、
WebGLだとあんまりSSRとかそんなに使われることがないから、
結構知らない人が多いかもしれないけど。
SSR重いんですよね。
そう、WebGLでちょっとやっちゃうとね、ちょっと重いから、あれなんだけどね。
Sバッファーでレイマッチングとかしないといけないので、
まあまあ割とヘビーな処理になっちゃいますね。
そう、だからちょっとね、やっぱまあスクリーンスペースなんで、
レイトレとかやるよりかはまあまあ軽いんだけども、
とはいえやっぱちょっと負荷が高い処理ではあるんで、
なかなかねWebGL開発ではお目にかかることが滅多にないんだけど、
でもやっぱ必要になることはある。
俺案件でやったことはあるもんね、やっぱりSSRは。
そうなんですね。
まあ俺の場合は結構特殊な案件がいっぱいあるから、
まあそのなんていうんだろう、
42:00
一般的に広く公開してプロモーションしてみたいなだけじゃないからさ、
結構俺がやってる案件だと。
なんかそのR&D的なやつがあったりするから、
そういうやつだともうハイエンドPCでしか動かなくていいんで、
SSRも全部入れにしていきましょうみたいなやつあったりしたんで。
へえ、そうなんですね。
みんなちょっとなんか異名がありますね。
そうだね。
いやまあでも結構やっぱさ、
3JSとかだとやっぱりいろんなこう、
Examplesの中にさ、いろんなこう機能がたくさん入ってるから、
まあ多分その中にSSRも入ってると思うし、
まあSSAOとかね、スクリーンスペースアンビデントクルージョンとか、
ああいうやつとかも3JSの場合は入ってるんで、
まあ興味がある人はね、もしWeb界隈で、
自分3JSしかちょっとやったことないですっていう人でも、
まあそういうやつ使えば一応どんな感じのものかは、
まあ調べることはできるんで、
まあ興味があったら調べてみてもいいかもしんないけど、
まあなかなか案件で使うってのはちょっと難しいかもしんないね、
WebGLの場合はね。
そうですね。
あとまあBuild in Render Pipeline使うか、
SRP使うかみたいなところで、
結構今悩ましい時期だと思うんですけど、
そうですね。
URPになって良くなったのって、
まあカスタマイズ可能っていうのがあるんですけど、
あと結構パフォーマンスも色々改善していて、
なるほどね。
SRPバッチャーっていうのがあって、
まあいわゆるこうバッチングをして、
こう描画を効率化するような機能があるんですけど、
その辺は結構全体的にBuild in Render Pipelineより
パフォーマンスは改善しているんで、
多分そういう観点で選んでもいいのかなと思います。
なんかそういうやつ、
そういう機能は端末に依存したりはしないの?
iPhoneでは動きませんみたいなのってあんまないの?
まあ多分一部あると思うんですけど、
SRPバッチャーに関してはモバイルでも動くんですけど、
例えばですけど、Zプリパスとかそういうのだと、
モバイルだと効果ないとか、
そういう細かい話はあると思いますね。
そうだよな、やっぱりそうだよね。
グラフィックスAPIにチューニングとかがあると、
グラフィックスAPIとか、
もしくは端末のSOCの共同使いに依存したりするんで、
この端末だとアルファテストが重たいとか、
そういうようなのもある。
確かに。
まあ基本的には、
いろんなプラットフォームが動くような最適化にあるはずですね。
Unityも結構機能がやっぱり豊富だし、
サポートしてるプラットフォームがめちゃくちゃ多いから、
本当にどうやってそこの差吸収してるのって、
45:02
問題感からすると思っちゃうけど、
いろいろそういうところの仕様を把握したりとかしながら、
プログラマーとして活躍しているっていうのがすごい伝わってきて、
ちょっと安心ではないんだけど、頑張ってんなって思いました。
はい。
まあでもUnityの開発者が一番頑張ってると思いますけど、
そういうプラットフォームの違いを吸収してるから。
本当だよね。それめちゃくちゃ大変そうだよな。
あとはSRPになって新しく出た目玉機能というと、
シェーダーグラフっていって、ノードベースでシェーダーができますみたいなもので、
実は言うと、Build Inventor Pipelineでも、
サードパーティー制でノードでシェーダーを切れるやつっていくつかあったんですけど、
結構有料だったりとかしたんですけど、
それがちゃんとUnity公式で無料でシェーダーノードグラフが提供されたっていうのは結構、
主要ポイントかなって思いますね。
実際になんかもう、これもし言えなかったら無理ではないけど、
案件で普通に使えるレベルになってる感じ?これは。
サイキャードは割とちゃんと使えるかなって感じですね。
ノードベースって結構、流行ってると言うと言い過ぎだけどさ、
結構何でもノードベースに従う傾向があるのかなって、
俺は勝手に思ってたりもするんだけど、
例えばUnreal EngineだったらBlueprintとかが有名だし、
結構3GSなんかもノードベースにしていこうみたいな流れがあったりするっていう話を
この間、山本さんから聞いたりもしたし、
結構ね、やっぱノードベースにすることの需要、
何かしらの需要を満たすからノードベースになっていくんだと思うんだけど、
Unityの場合はシェーダーグラフにしたことによって何が良くなったって感じなの?
そうですね、一応いろんな理由があると思うんですけど、
一つはシェーダーグラフって一つのシェーダーグラフから、
いろんなレンダーパイプライン用のシェーダーが生成できるようになっていて、
さっき言った一つのシェーダーグラフから、
URPのシェーダーとかHDRP用のシェーダーっていうのが出せなくなっているので、
いろんな種類が増えてきたレンダーパイプラインに対して、
複数のシェーダーのコードを生成するために、
シェーダーより1個目の中小レイヤーみたいな位置づけであるっていうのがあると思いますね。
だからシェーダーグラフが中間に入ってくれるおかげで、
レンダリングパイプラインに依存しないシェーダーが書けるみたいなイメージか、そうすると。
そうですね。
シェーダーのメタ言語的な側面もあるのかなと思いますね。
なるほどね。
あとはやっぱり、これ多分いろんなところで言われているからあるかもしれないですけど、
エンジニア以外もシェーダーを書けるっていうのはやっぱり差別化というか、
強みなのかなと思いますね。
要するにいわゆるアーティストの人からプロ側に依頼して、
48:01
こういうシェーダーを作ってくださいっていうようなやり取りが発生していたのが、
アーティストだけでもシェーダーを作れるっていうのは確かにメリットになるかなと。
結構なんかもう普通にスライダーをグイグイって動かしたら、それが反映されるみたいな感じに使えるの?普通に。
なんか俺どういう状態のものなのかいまいちわかってないんだけど、そのシェーダーグラフというものについて。
結構ほんとプリミテッドというか、基本的には数式が単にノードに置き換わっただけなんですけど。
なるほどね。そういう感じか。
例えばディフューズライティングしたかったら、ライトベクトルとノーマルベクトルを取った絵をノードに書くだけです。
なるほどね。そういう感じか。
ただ、そういうやり方だとちょっとあんまり面倒作画があっただけなのかなって感じはしちゃうんですけど。
もちろんライティングよりもレイヤー一つ上で、テクスチャーなんか何個かあって、このテクスチャーは例えばラフネスに使いますとか、
そういう用途だと結構、むしろシェーダーコードよりはしっくりきたりするのかなと。
目で見てわかりやすいっていうのもあるしね。
あとはPBRになってくると、ライティングの計算はその後よりはPBRのラフネスとかスムースネスみたいな、メタリックとかそういうPBRのパラメータを出力台にするので、
そういうのがアーティストでも使いやすいかなと。
確かにね。コードで書かれているよりかは絶対そっちの方がわかりやすいよね。
やっぱりね。
ただやっぱり使い分けが難しいなと思ってて。
ライティング計算みたいな数式をノードで書くのは多分現実的じゃないので。
ただそれを解決するのがカスタムファクションっていうのがあって、
一部のノードはHLSLのコード、Shaderのコードを書けるっていうノードがあるので、
そうやってあげるとエンジニアの両分はカスタムファクションに実装して、
それを使って、それを組み合わせてアーティストの方がうまいことをやるとか、
そういうような分担が割といいのかなって感じには考えてますかね。
なるほどね。Unityは本当にさっきもガム君が言ったみたいに、
たぶんUnityを作っている人たちがめちゃくちゃ大変なんだろうけど、
これからもたぶんどんどん進化を重ねていくんだろうから、
それに追いついていくっていうのもすごい大変そうな感じがするわ。
結構あれですね、URPのバージョンって今15まであるんですよね。
リリースして4年とかなんですけど、15までバージョン、メジャーバージョンがあるので、
51:05
そのたびに結構破壊的な変化があるかもしれない。
もしかしたらWebのフロントより変化激しいんじゃないかと。
そうだよね。下手したらあるかもしれないよね。
だからその辺のバージョンの変化とか、
単純に新しい研究で新しいテクニックがどんどん増えたり、技術が増えたりみたいなのはあるとしてもさ、
ツール自体の変化も追いついていくのは大変そうだなって思うわ、本当に。
[音楽]
ここまでは結構Unityの話を中心に聞いてきたんですけども、
ガム君といえば、私のガム君を普段から観察しているというか、
Twitter越しに見ている様子で、特に話題として外せないなと思っているのに、
レイトレ合宿があるんですけど、レイトレ合宿がどういうものかというところから聞いてもいいですか。
レイトレ合宿っていう、デイトレ、オフラインレンダリングの合宿勉強会が、
毎年8月か9月、セレックの翌週ぐらいに毎年開かれていて、
ここでは自分で自作のレンダラーを作って、それをバトルするというか、
誰が一番すごいレンダラーを作れるのかを競う。
これ競うのは参加者投票できるみたいな感じの、ユニークな合宿勉強会みたいなのがあるんですけど、
そこに結構毎度参加しますね。
結構なんか、俺本当に、なんていうのかな、これ偏見ではないんだけど、
レイトレって俺の中ではすごく難しいイメージがあるから、
だから初めてガム君がレイトレ合宿行ってきますみたいなツイートしてた時は、
こいつやべえなって最初思いましたね、それ見た時は。
あー。
うん。
確かに最近レイトレ合宿のレベルがだいぶ上がってて、
自分も毎回宣戦強強としてるんですけど、
宣戦強強としてる。
あのー。
割とガチ勢しかいない感じの雰囲気あるからね。
ガチ勢しかない。
ガチ勢しかない。
ちょっとね、なんかこうなんていうのかな、
みんなでたくさん人集めてわきあいあいっていうよりかは、
やっぱそのレイトレに真摯にね、真面目に向き合っている人たちが、
技術を高め合うためとか、議論をいろいろするためとか、
自分のレンダラーの技術、プログラミングの技術を競うためだったりとか、
いろんな理由でね、やられて参加されてるとは思うんだけど、
結構内容的にはもうガチの、
本当になんかちょっとこう、
かじっただけではわかんないような用語が結構飛び交うようなイメージがあるわ。
なんかレイトレ合宿は。
54:00
まあそうですね、結構参加者の方々が割と本当にグラフィックスの研究者だったりとか、
もしくは本当にプロダクションのレンダラーを開発している方だったりとか、
本当にプレイステーションのレイトレのSDK作ってる方とか、
結構本職の方とかもいたりするんで、
そういう意味では結構ハイレベルの高い協会だなという毎回思います。
でもすごい刺激的ですね。
あとはそうですね、
あとは、今あったレンダラーの競う本選以外にも、
セミナーがあったりとかするんで、
そこでいろんな話聞いたりとかするので結構楽しいです。
普通に楽しいっていうのもあるし、勉強になるっていうのもあるし、いいですよね。
いいですね。
なんか実際に俺参加したことはないんだけど、
レイトレ合宿で例えば自作のレンダラーを競うみたいなやつも、
どういう感じのことをやるのか多分イメージできない人は結構いるのかなと思うんで、
さっき制限時間があるよみたいな話もあったと思うんだけど、
その制限時間ってそもそも何に対する制限時間だろうとか、
結構わかんない人が多いかなと思うんで、
その辺もちょっとレギュレーション的なところを聞いてもいいですか。
はい。
そうですね、レイトレ合宿って基本的に毎年レギュレーションがあって、
毎年レギュレーションが変わるんですけど、
要するに何分以内に結果を連打にしないといけないかっていうのが毎年変わっていて、
これ年々短くなっていて、
なんか有名な方が言うには無害の法則があるから、
みたいな毎年制限時間が半減しているんですけど、
はい。
実は初回、第1回のレイトレ合宿の制限時間が1時間で、
1枚のCGをレンダリングするのに1時間CPUを分回し続けるってことだよね。
ていうか1時間以内にレンダリングを完了させてくださいねっていうレギュレーションってことだよね。
そうです。
結構僕から的な感じで、1フレームに1枚だと。
で、その次が翌年が30分になって、
で、さらにその翌年が15分って感じで、
今だんだん短くなっていくって。
半減しやすい。
で、しかし去年が、去年じゃないか、前回、前回2019年、
あ、別にコロナで直近開催されなかったんで、前回が2019年だったんですけど、
その時は60秒だったんですけど、1分ですね。
1分以内に1枚の絵をレンダリングできればOKと。
今年がレギュレーションがいきなり変わってきて、
今まで静止画部分だったのが、静止画部分が消えて、
動画部分が本線になって。
急に動画になったんだ。
動画や。
で、一応何か、確か何だっけな、
最大10秒の動画を10分で描画するみたいな感じなので。
57:02
最大10秒を10分。
そうですね。なので、60fpsだったら1フレーム1秒。
30fpsにしたら2秒って感じで、
fpsとかは選択できるんですけど、
なので、まあでも、多分これfpsの選択なんですけど、
自分の場合は30fpsの10秒、レンダリングさえ2秒でしたね。
1フレームにかけられちゃう。
うーん、なるほどね。
去年、てかまあ去年というか前回は1分だったのに、
突然2秒以内にレンダリングを完了させなきゃいけなくなっちゃったってことだった。
そうです。さすがにハードウェアも30倍しかなってないので、速度は。
だいぶ制限時間が禁止になっているので、
何かいろんな最適化の工夫が必要ですね。
うーん、なるほどね。
まあその辺のこうどう最適化するかとか、
どういう風に綺麗に見せるかみたいなところが、
レイトレのその醍醐味というか、
技術が重要な部分だったりってことだよね。
そうです、まさにそこがやっぱりいいですね。
やっぱり何も工夫せずにレイトレ実装すると、
レイトレってすごい良くて、
シンプルなアルゴリズムですごい写実的な絵が出て、
すごい楽しいんですけど、
多分何も工夫せずにレイトレやると、
多分本当は1時間ぐらいかけないと、
全然収束した絵が出ないんですよね。
多分1回実装してみないとわからないかもしれないけど。
いや、そう、そうだね。
多分教科書的な、まずやることってあるじゃん。
何をやるにしても。
レイトレの場合も、まずこれをやってみましょうってのがあると思うんだけど、
それでも何ていうのかな、
最近だともう結構マシンが高速化してるから、
ちっちゃめのJPEGとかだったら結構瞬時にできちゃうというか、
本当にシンプルなレイトレだったらさっと終わると思うんだけど、
より写実的に、より美しくみたいなところを追求していくと、
その辺はただ実装しただけだと重すぎたり、
無駄がちょっと多すぎたりっていうことになってくると、
それこそ本当に何十分もかけてやっと1枚がレンダリングできるみたいなことが普通にいまだにあるよね。
ラスタライズに対してのレイトレも結構いろんな意味があるので、
工業のレイトレっていうのは要するに、ラスタライズはポリゴンをスクリーンに配置するというか、
三角形を配置するみたいな、その処理をラスタライズって言うんですけど、
そうじゃなくて、仮想的なスクリーンを定義して、
カメラからレイを飛ばして1ピクセルずつ塗っていくみたいなのがレイトレっていうんですけど、
正直今のPCってスペック高いんで、
プライマリー例というか、
共鳴例の、なんて言うんですかね、
プライマリー例、要するに直接行しか考慮しないようなレイトレだったら本当に一瞬時で割るんですけど、
ただ、フォトリアルな絵を出そうとすると、
直接行だけじゃなくて要するに間接行なんですけど、
1:00:03
要するにいろんな経路で、おぼえた人を何回も二つに相互に反射とか拡散した後のレイみたいな、
そういう間接行の影響まで考慮する必要があって、
それをシミュレーションすると、めちゃくちゃ膨大な計算力が必要になるので、
時間かかるって感じですね。
そうだよね、だからその辺の高速化のノウハウとかは、
俺ほとんど、なんとなく用語はわかる、目にはしてるからさ、
なんとなく用語はわかるんだけど、
自分でそこまでがっつり取り組んだことはないから、
どういう風な高速化があるのかとか、あんまり詳しくは知らないんだけど、
結構その、今年は2秒以内に1枚絵描かなきゃいけないみたいなのがあったってことだったけど、
結構ガム君的にはどの辺を気をつけて実装しました、みたいなのはあったりするの?
そうですね、レントルの高速化は本当に色々あるんですけど、
大体大きく分けると4つぐらいあって、
1つ目がマシンスペックをなるべく活用する、最大限活用するっていうのがあって、
最近のCPUってすごいコア数がいっぱいあると思うんですけど、
単純に実装すると1コアしか使えなくて、
全部のコアを均等に100%のCPUを使うって意外と難しかったりするんですよね。
その辺は平均計算とかうまく利用して実装するという感じですね。
それが1つ目ね。
2つ目が交差安定の高速化。
要するにレントルって半直線、0とポリゴン、三角形の交差安定を何回も何回もやるような仕様なんですけど、
レントルだとよくVBHっていうデータ構造が使われていて、
VBHっていうのはBounding Volume Hierarchyの略なんですけど、
これを使って交差安定を高速化しますね。
普通に素朴に交差安定、Cに対して交差安定する場合って、
ポリゴンを1個1個比較して交差安定するので、
例えばポリゴン数が1万個あったら1万回1個ずつ交差安定しないといけない。
それはCが巨大になってくるとどんどん非現実的になってしまうんですけど、
VBHっていうのはどういう構造かっていうと、
Bounding Boxが入れ子になってるんですよね。
要するに階層構造になっていて、
これを使うことによって交差安定をするオブジェクトの範囲っていうのをどんどん絞り込んでいくことになるんですね。
そうすると、素朴な実装が線形となったからとしたら、
VBHを使うことによって、2分短冊的なことができるので、
それによってオーダーをNから6Nに減らすことができるので、
1:03:02
これによって交差安定は高速化できますね。
結構このポッドキャストを聞いている人たちで伝わりそうな概念で言うと、
3DSで言うとRaycasterが原理としては近くって、
3Dシーン上のオブジェクトをクリックして選択したいみたいな時にRaycasterを使うと、
クリックされた場所にメッシュがあるよっていうのが結構判定できたりするんだけど、
要はあれを全部のピクセルに対して、しかも何回も何回もやらなきゃいけないっていうことをやるんで、
それをなるべく範囲を狭めて、
絞って絞って本当に厳密にチェックしなきゃいけないところ以外はざっくり判定して、
なるべく高速化するみたいなそんなようなイメージだよね、多分ね。
そうですね。
ちょっと余談になっちゃうんですけど、最近ではないか、2018年くらいの話なんですけど、
NVIDIAからRTXっていって、レートレーシング対応GPUみたいな感じで出たと思うんですけど、
どうやってやってるかっていうと、VVHに対するトラバーサルみたいなのをハードウェアでやるっていう、
専用のハードウェアで交差判定をするっていうのがレートレーシング対応GPUの本質というか、
それがレートレーシング対応っていうのだったりしてますね。
だからそこの部分が最適化されるとめちゃくちゃ高速化につながりますよっていう、
高速化ポイントその2が交差判定の高速化ですよっていうところだよね。
その3がサンプリング高速化なんですけど、サンプリングってどうしようかな。
レートレーシングではBRDFっていうのは、もしかしたら聞いたことあるかもしれないですけど、
物体の表面にある角度で入射したものがどの角度に出て感謝するかっていう、
そういう確率ミスの関数みたいなのがあって、
完全角三面だったらそれの確率ミスとか均等というか、
要するに完全にランダムに反射するようなマテリアルもあれば、
金属とかだったらある程度スピークラーのローブがあるというか、ピークがあったりする。
要するにBRDFによっていろんなマテリアルが表現できるんですけど、
確率的にその例の反射の方向を決めるみたいなのをサンプリングって言うんですけど、
レートレーシング、パストレーシング、単方向パストレーシングの話にあっちゃうんですけど、
基本的にカメラから例を飛ばしてBRDFの確率ミスに沿って、
次の例をサンプリングしてっていうのを何回も繰り返して、
偶然光源にヒットしたら、ライトからカメラのパスができたというところで、
1:06:06
結果をコントリビューションというか、そこで初めて結果に寄与するんですよね。
つまり逆を言うと、たまたま光源に当たった時にしか計算が無駄になっちゃうというか。
その色を、ピクセルの色を決めるところに入ってくるロジックが光源にぶつかった時しかないから、
効率よくぶつかった時だけを取り出したいっていうことだよね。
なんかあるのが、Next Event Estimationっていって、物体に当たった時に、
ライトの表面を直接そこからサンプリングして、
たまたまじゃなくてちゃんとライトを狙ってサンプリングできるみたいな、
ダイレクトサンプリングとかNext Event Estimationというんですけど、
そういうアルゴリズムが一つありますね。
あともう一つ、Importance Samplingっていうのがあって、
これはBRDFの確率ミスと関数に沿って、
確率ミスの高い分をより多くのサンプルを飛ばすように調整してあげる。
重点的にサンプリングするっていうのがImportance Samplingって言いますね。
なんかその辺はちょっと、俺も全然詳しく分かんないから、
代わりに説明してあげることもできないけど、
要はサンプリングっていうのは取り出してくるってことだよね。
要はちょっと違うな。
そうですね。確率的なアルゴリズムなので。
言ったNext Event EstimationとImportance Samplingって、
それぞれ得意な場合が違うんですけど、
ラフネスとか光源の大きさとかによって、
得意なシチュエーションが違うんですけど、
その2つの戦略を上手い割合でブレンドさせてあげると、
より収束早くなるっていうアルゴリズムがあって、
それがImportance Samplingって言うんですけど、
それでNext Event EstimationとImportance Samplingをうまく組み合わせてあげると、
より収束、少ないサンプルでもきれいにし、
ノイズの少ない結果が出たりしますね。
それはどれぐらいの割合で比重を置くかみたいなところは、
状況によりけり光源だったり何を描画するかによって変えなきゃいけないというか、
調整が必要みたいな感じのイメージかな。
これはですね、何て言えばいいんですかね。
なんか黄金率的なものがもう決まってるというか、
こういうふうに組むのが定石ですよみたいな感じで、
ある程度は決まってるものなの?
これちょっとちゃんと説明するの難しいんですけど、
2つの戦略の選ばれる確率みたいのをそれぞれ計算して、
1:09:04
確率水の板をうまく合成することによって、
パワーヒューリスティックとか色々あるんですけど、
そういうのを使うと最適なウェイトが求まるんですよね。
この辺でもちょっとすごい難しいんですけど、
冷蔵館合宿の参加者にショッカーさんがいるという方がすごいばかり説明してるので、
詳しく知りたい方は、
ショッカーさんのブログとかすごいよね。
詳しく知りたい方はショッカーさんの記事とか、
他の冷蔵館合宿の参加者の記事とか見るといいかもしれないですね。
4つあるうちの最後は何ですか?
最後はデノイズというもので、
これはサンプル数が足りないときの高周波のノイズを、
フィルター的な処理でノイズを除去してあげるという仕様ですね。
デノイズも本当に色々な仕様があるんですけど、
一番単純なのがバイレタリフィルターと言って、
軌道の変化が激しい部分だけを抽出して、
ブラーして平滑化してあげるみたいな、
そういうフィルター的な画像処理的なので、
やったりするのが一番シンプルなデノイズですかね。
ただ軌道差だけじゃなくて、
例えばオブジェクトのエッジとかもいきなりきっと変わったりするので、
そこはノーマルとか、放線とか、
オブジェクトのIDとかそういうような情報を駆使して、
いい感じにブラーするときのウェイトとかを調整してあげることによって、
ノイズだけをうまくぼかすとか、
そういう感じの手法がオーソドックスなデノイズで、
最近はデノイズっていうと機械学習が本当に強くて、
いわゆるリアルネックワークでやるのが一番品質が高いのかなって思いますね。
機械学習とデノイズがうまく結びつかなかったりする人もいると思うんだけど、
機械学習であらかじめ学習して、これがノイズだぞっていう判定を、
機械が自動的に判定して消してくれるみたいなイメージであってる?
そうですね。多分、自分も詳しくないんですけど、
サンプリング数が足りないような画像と、
リファイエンスの収束した画像を多分大量に学習させてあげて、
それによってノイズを除去した綺麗な結果みたいなのを、
ディープランニングで生成するっていう感じだと思いますね。
なるほどな。
それは何なの?
自分でその機械学習部分を実装するようなイメージなの?
1:12:02
一部の参加者はニューラルネットワークを作ってたりもするんですけど、
自分はちょっとそこまでできなかったので、
オプティックスっていうNVIDIAが提供してるライフライがあって、
オプティックスの中にディープランニングデノイザーっていうのがあるんですけど、
そういうことね。あらかじめ入ってるから、それを使えば綺麗になるよっていうこともできるんだ。
そうですね。
オプティックスを使えば。
オプティックスのデノイザーは本当に優秀で、結構簡単に使えるので便利ですね。
速度的にはどうなんですか?やっぱりそれが速いって感じなの?
十分速いですね。リアルタイムレンダリングはちょっと厳しいかもしれないですけど、
1秒とかかけていいんだったら、1秒はかからないですね。数ミリ秒。
ただリアルタイムだったら多分厳しいと思います。16msとかでできないと思いますけど。
60fpsでは多分ちょっと間に合わないよね。
なるほどね。
60fpsでやるとしたら、倍率だったりとかそういうような方が今扱われてるかなと思いますね。
なるほどね。一応最初の話に戻すと、レイトレは何やかんや結構レンダリングに時間かかってしまうという歴史があり、
最近だと2秒で1枚とか焼かなきゃいけないので、高速化しなきゃいけないって言って、そこで高速化の端だとして4つありますよと。
1つ目がCPUの全高を使い切るみたいなそういうスペックをちゃんと引き出しましょうねっていうのが1つ目。
2つ目はレイトレの高速判定の部分を最適化していきましょうねっていうのが2つ目。
3つ目が例のサンプリングを効率化しましょうね。
インポータンスサンプリングだったりみたいなのを駆使していくっていう話が3つ目。
4つ目がノイズが乗ってしまったレンダリング結果をデノイザーを使ってきれいにするってことだよね。
この4つを駆使して最終的に出来上がった絵の連番を組み合わせた動画でみんなで競い合うっていうのがレイトレ合宿ですよって感じか。
楽しいイベントですね。
話だけ聞いててもめちゃくちゃ面白そうだけど、自分が出来るかどうかで言ったら出来そうな気がしない。
昔初回の開催の時とか、1時間かけてノイズないやつとかで許されてた。
許されてるかそういう方もいたんですけど、最近はみんなめちゃくちゃ少ない時間で全然ノイズない結果を出してくるので。
本当にリフレッシュしますね、レベルが。
実際、たぶんこのノーモライズFMのショーノートにもリンクとか貼っておこうかなと思ってるんですけど、
1:15:07
実際どんな動画が出力されたのかとか、たぶんちゃんと公開されてる人もいる?全部公開されてたりする感じ?
レンダリング結果全員公開されてますね。
うん、だからたぶんそれを見ることもできるんで、ぜひ皆さん、ちょっと興味があったらね、レイトレ合宿でどんな作品が出されてるかとかもね。
結構なんかその作品だけじゃなくって本人がどういう感じで喋ってるか、そのツイッターとかでその作品をどう紹介してるかとかもなんか見たら結構面白そうだなって思うけど、
なんかちょっと上手くいきませんでしたっていうのもあれば、上手くいきましたっていうのもね、あったりして結構そのドラマチックなツイートを結構見る気がする、俺いつも毎年。
結構、割と本番一発勝負だったりするので、自分の手元では動くのに本番だと動かなかったみたいな感じで、悲しい思いをした方とかも今年もいらっしゃいましたね。
そうだよねー、どんだけ準備しといてもね、結局やっぱり想定外のトラブルが起こったりがするだろうから、なんか今年は俺本当にあれだよ、本当はこうなるはずでしたっていうツイート見たよ今年は。
なんかその、ガム君が見ててこの人はやべえなーみたいなの、作例はなんかありました?
そうですね、結構いろいろ皆さん、今言ったやつって本当にスタートラインでみんなそっからいろいろやってるってやつをしてるんですけど。
まあそうだよね、さっき言ってた高速化の4カ条みたいなのはやって当然みたいなレベルだよね。
今年ちょっと特に面白かったのが、うしおさんという方がいらっしゃって、うしおさんがなんかNERFを使ってきたんですよね。NERFっていって、大量の画像で学習させてあげることによってニューアルネットワークでシーンを表現する、3Dシーンを表現するようなニューアルネットワークがあって。
そう、だからちょっと誤解のないように言っておくと、NERFはレイトレの世界で一般的な用語とかそういうのではなくて、どっちかというと機械学習のジャンルでNERFって呼ばれている技術があって、それをレイトレ合宿で組み合わせてきた方がいたっていうこと。そういう文脈だよね。
そうですね、3DシーンをNERFで作りましたっていう。
はいはい。
こんな感じですね。
なるほどね。
NERF、自分はあまり詳しくないんですけど、NERFって入力がカメラの位置と向き、カメラの姿勢ですね。出力がそれに対応した放射気度であったりとか、透明度っていう、要するにボリュームデータなんですけどね。
なのでNERFのレンダリングって、要するにボリュームデータに対するレイマーンチングなんで、実はNERFを可視化するのは基本的にはレイトレなんですけど、そういう感じでレイトレ合宿でNERFを使ってきたって感じで。
1:18:14
で、NERF使っただけは結構なんか面白いなと思ったんですけど、西尾さんのさらにすごいなと思ったところが、これリソースにあたって普通機械学習のライブラリとか使うと思うんですよ、普通は。
うんうん、普通に考えてるんだよね。
まさかの、そういうの使わずに、空打だけで全部自作したっていうのはちょっと。
自作してた。
それはやばいね。それはやばいね、確かに。
機械学習の部分、あとなんかこう、シーンとかも実際に近くの公園でロケハンして写真をいっぱい撮ってやってみた。
で、それをレンダリング結果として動画にしたって感じか。
うん、なるほどね。
なんかそう、やったこともすごい結構いろいろ感じられたので、個人的には面白いかなって思いましたね。
いやー、西尾さんはね、なんか俺もそんな親密なやりとりとか、有効関係があるわけではないんだけど、1回だけ確かイベントで話したことがあって、本当一瞬ちょっとだけだったけど話したことがあって、
名前だけね、ちゃんとその時から、この方が西尾さんかって、私の中では結構ちゃんと記憶に定着してるんで、名前をね、たまに見かける度にやってんなって思ってるんだけど、
なんかNERFを自分で実装してくるとかはちょっと、なんか西尾さんっぽい感じがするわ、なんとなく。
西尾さんのイメージにぴったり合うというか、できちゃうんだろうなっていう感じがするわ。
実装力おばけだと思いますね。
ね、実装力おばけだよね。
NERFもね、ちょっと全然知らない人がやっぱ多いと思うんで、スペルで言うと、アルファベットで大文字のN、小文字のE、で大文字でRFって続けて、4文字でNERFって読むんだけど、
まぁ結構YouTubeとかにこういう原理でやってますよみたいなね、動画とかも上がってたりするんで、もし気になる方は動画とか探してもらうとね、こういうものかっていうのはなんとなくわかると思うんだけど、
まさかそれを自前で実装してきて、レイトレ合宿の作品として仕上げてしまうっていうのはちょっと、ちょっとおかしいですね。
なるほどね。結構レイトレ合宿自体は、そうなんかそもそもレイトレ合宿のロケーションの話とかしてなかったけどさ、
あー確かに。
どこら辺でやるとかその辺もちょっと聞いてもいいですか?
レイトレ合宿の開催場所って毎年変わるんですけど、今年は沖縄本島でやりましたね。
あー今年は沖縄だったんだ。なんかそのみんながさ、台風の日にさ、なんかみんながあの飛行機に乗っていくからさ、おいみんな大丈夫かよっつって、すげえ心配だったんだけど。
1:21:07
今年はちょっとね、台風14号かなんか結構すごいでかい台風がちょうど来ちゃって。
ね、ちょうど達成しちゃったんだよね。
そうですね、本当はあの、だからそうレイトレ合宿って本当にさっき言ったレンダーをバトルする本選とかセミナーとかあるんですけど、それ以外にも普通に観光とかも本当はして。
合宿っていうぐらいだからみんな同じ場所で寝泊まりする感じなの?
あーですね、あの今回だと参加者でホテルの一棟、一棟っていうかな、ホテル一棟貸し切ってやるっていう。
めちゃくちゃ面白い、それで何、なんか夜とか朝とかになんか勉強会があったりみたいな感じ?
そうですね、あの今年はですね、セミナー全員発表で割と結構みんなちゃんとして勉強してくれるので、朝から晩までセミナーでした。
でも本当にやっぱり皆さんこういろいろ、それぞれいろんなバックグラウンドがあって、いろんな専門性がある方々なんで、結構本当にそれぞれ面白い話がたくさん聞けて、とても刺激的でしたね。
うーん、なるほどね。いや羨ましいわ。
俺ももし、自分で連打かけるぐらいの頭の良さがあったら本当に参加したい。
まあなんていうんだろう、そのツイッター上でね、こう繋がりのある人たちでは何人か参加している方々がいらっしゃるんだけど、やっぱ俺の能力じゃちょっと参加できない気がしねえわ、本当に。
なるほどな。
参加したかったらまず一回こう自分で連打を実装して、ツイッターでこうアピール、連打を作ったぜってアピールすると、まあもしかしたらこう、なんだろうな、上の方から声がかかるかもしれないですね。
いやでも別に参加自体は自分から手を挙げる感じじゃないの?なんか別に招待制とかではないでしょ?
いや、招待制みたいな感じですね。
招待制に近い感じなんだ。
招待制に近いか、あのー。
ある程度なんかその、ちゃんと取り組んでる人たちだけでまあしっかりやっていきたいみたいなところがある感じか。
そうですね。人をガチでやる人だけでやりたいっていうのと、あとやっぱり人増えるとやっぱり運営がコストが高いっていう感じ。
まあ合宿ってなるとそうだよね、大変になっちゃうもんね。
あとちょっと割となんか有名になっちゃってるね、あんまりこう、なんだろうな、あんまり軽い気持ちで参加してほしくないみたいなところがありそうですね。
いやわかるわかる、その空気感は俺はわかる。自分ではわかるつもり。そのなんか、なんとなく、そのカジュアルにやるとやっぱりカジュアルにやることの弊害っていうのは絶対あるから、うん、わかる気がするわ。
なるほどね。いやまあでも、ほんとあれだよね、その例えばなんか学生さんとかでコンピュータグラフィックスちゃんと取り組んでますっていう人で、
1:24:00
興味がある人いたらほんとまずはレンダラー描いて、こんな感じの絵がこんな風にレンダリングできたよみたいな感じでね、
Twitterとかで声あげてくれれば、もしかしたら目に留まるかもしれないからね。
そうですね。あとまあ今年結構学生の方多かったですね。
そうだよね。結構なんか俺も見てて学生さん多いなーっていう印象がある、何年か前からやっぱり。
ちゃんとこう、すごいこう、親近大使じゃないですけど、参加者がこうアップデートされてるなーっていう感じがしますね。世代交代みたいな感じ。
いやほんとそうだよ。なんかそういうことが起こらない業界はやっぱだんだん、ね、あの、王子たちが幅を利かせるようになっていっちゃうから。
どんどん若い人たちが入ってくれ、来てくれる方が絶対いいよね。
ですね。
はい、えーと、では今日もいろいろね、ちょっと今日はなんか、どっちかっていうと技術的な結構ガチな話がいっぱい聞ける回で、なんか今までにない感じのね、あの内容になってるかなと思うんですけど、
ね、時間は結構有限だったりもするので、今日のところはね、この辺で終わりにしようかなと思います。
はい、じゃあ最後に、えっと、ガム君の方から、まあ細田君の方から、告知などお知らせなどありましたらお願いします。
はい、えーと、今月10月の25と26日に、SYNCというETの主催のカンファレンスがあるんですけど、そこで私も発表します。
で、あの発表のタイトルは、モバイル携帯量描画テクニックっていうタイトルなんですけど、そうですね、コンピュートシェーダーの目視して、こうGPUカーリングして、
モバイル上でこうたくさんのオブジェクトを描画するっていうような、たくさんのオブジェクトを効率的に描画するというような手法を開設するような発表なんですけども、
ぜひ聴いてください。SYNCについて補足すると、前、コロナになる前は、UNITEっていうオフラインの、リアルのか、
UNITE主催の大規模なカンファレンスがあったと思うんですけど、それがもうコロナで3年くらい開催されてなかったんですけど、3年ぶりにUNITE主催の大きなカンファレンスが開催されるっていう感じになりますね。
補足すると、前にUNITEってやっぱり会場があったりして、参加が有料だったんですけど、今回はオンラインで、しかも参加無料なんで、時間さえあれば、いきがいに参加していただけたらいいのかなと思います。
自分のセッション以外にもたくさんいろんなセッションがあるので、いきがいに参加していただけたらいいのかなと思います。
1:27:08
2つ目の宣伝なんですけども、私の所属しているクラブ、かみし会社では優秀なエンジンには募集しています。
今日の話を聞いて、興味が出た方がいらっしゃるかわからないんですけども、もし興味があれば応募していただければ嬉しいなと思います。
これは採用ページ的なところがあって、そこから申し込めばいい感じですか?
そうですね。採用ページから検索者が出てくると思うので、そこを応募していただいてもいいですし、
もし私と面識があるような方であったら、Twitterにダイレクトメッセージを送ってもらってもいいですし、
もしかしたら社員紹介をしてもらって、面識があるようになったら直接コンタクトしていった方がいいかなと思います。
ありがとうございます。今日の話はかなり濃い話ができたと思うので、
ぜひこんな感じの技術の話とか、フランクにできるんだなというところに魅力を感じる人がいたら、採用の方も興味があったらアクションを起こしてみていただければと思います。
細田君、今日は本当に色々、すごいコアな技術の話とかをいっぱい聞かせてくれて、めちゃくちゃ楽しかったです。ありがとうございました。
ありがとうございました。私もドクターさんと久しぶりに話してきて本当に楽しかったです。
ありがとうございます。
最後に、ノーマライズFMのいつものお知らせになりますけど、ノーマライズFMでは#のノーマライズFMというそのままのハッシュタグで、皆様からのご意見ご感想など随時募集しております。
本当にちょっと聞きましたよみたいな感想だけでもすごく嬉しく拝見してますので、ぜひ何か思うところがありましたら気軽にツイートなどしてもらえたらと思います。
今日は終わりにしたいと思います。最後まで聞いてくださってありがとうございました。
(BGM)
(字幕視聴ありがとうございました)
01:29:36

コメント

スクロール