プログラミング

Unityの学習を兼ねて久しぶりにゲーム制作をした

GW期間中にUnityやHoudiniやSubstance Designerの学習を兼ねてシンプルなシューティングゲーム制作を行っていました。 今回は僕の好きな人気ゲーム(地球防衛軍・アーマードコア・Call of Duty)に多大に影響を受けつつ作りました。 いつかオリジナルなゲー…

マイクロファセットBRDF

Shader - Shadertoy BETA 今までいろんなShadertoyの作品で使ってきてましたが、正直理解が浅すぎたので改めていろいろな記事を参考に再実装しました。 用語の整理等もでき始めたのでそこそこ理解が進んだ気がします。 特にこのシリーズはとても参考にさせて…

2019年9月のシェーダーを紹介する

サムネ用 はじめに 毎月やっている月毎に制作したシェーダーの紹介第8回目です。 今月はShadertoyで一つシェーダーを作ったので簡単な解説をします。 Energy Lab 久しぶりにワンパスレイマーチングをやりましたhttps://t.co/y7oiQkUcvK#shadertoy #raymarchi…

Unity HDRPのLitシェーダーを改造してレイマーチングする(GBuffer編)

サムネ用 なにをやったか 今回はUnityのHDRPのシェーダーを改造して、HDRPのシーン上にレイマーチングオブジェクトを表示しました! Unity HDRP + Raymarchingのプロジェクト公開しました!興味があれば動かしてみてください!!https://t.co/hcBJKSWzC9コー…

Unity HDRPをカスタマイズしてアウトラインパスを追加する

HDRPを弄れる環境はこちらで既に整えました nanka.hateblo.jp 今回は実際にカスタマイズして周作に最適なアウトラインパスを追加してみます。(Render Graphがリリースされたらここの情報は無になります(多分...)) 使用するバージョン Unity 2019.2.0f1 H…

2019年7月に作ったシェーダーを紹介する(VRChatライブコーディングもやったぞ!)

サムネ用 はじめに 毎月やっている月毎に制作したシェーダーの紹介第6回目です。 今月は先月までと比べて忙しい時期だった(後先月頑張りすぎて燃え尽きていた...)ので、あまり活動できませんでしたがいくつかシェーダーを作ったので紹介します。 7/3 仕事…

LWRP学習 レンダリングパスを追加する

そろそろUnityも触らないとなぁと思ったので、LWRPを少しずつ学習していこうと思います。 手始めに、目標を達成するためにレンダリングパスを追加してみます。 今回はいずれシャドウマップを使ってエフェクトを作成したかったので、Screen Space Shadowパス…

Tokyo Demo Fest 2018のGLSL Graphics Compoで優勝した!作品の解説等

2018年の12/1と12/2の2日間に渡って、Tokyo Demo Fest 2018という日本唯一のデモパーティが開催され、そこに初参加してきました。 僕はそのイベントの、GLSL Graphics CompoとCombined Graphics Compoに作品をエントリーして1位と4位に選んで頂きました!あ…

webgl-waterのコースティクスをshadertoyで実装した

ちょっと前にtwitterでバズっていたwebgl-waterのコースティクス部分をフラグメントシェーダーで実装した https://www.shadertoy.com/view/MldfDn せっかくなのでqiitaで解説記事を書いた qiita.com 6年ぐらい前から存在は知っていたんですけど、当時は全然…

Renoiseと4klangで作成した楽曲をexeで再生する

デモシーン制作では音楽も重要なので今週は音楽関連を学んでいました 検討した方法としては 映像同様シェーダーで生成する shadertoyでは音楽を生成するシェーダーが書けたりしますよね 4klang等の軽量ソフトシンセを使用する 4kデモシーンではこちらが一般…

「error LNK2001: 外部シンボル "_fltused" は未解決です」を解決する

小さいexeを作っているときに _fltused が未解決だからどーのというエラーが出てしまってビルドできなくなってしまいました。。 ググると↓のページを見つけて コスミー報告書[社外秘] - CSTLを使ってDLLを小さくするっていう話 EXTERN_C int _fltused = 0x98…

crinklerとvisual studio 2017で400byteのexeを作る

最近4kbデモを作りたくてグラフィック面でいろいろ勉強していたんですが、今週は小さい実行ファイルを生成する手法を学びました 開発環境 visual studio 2017 comunity crinkler20a 空のプロジェクトを作成する 最近めっきりvisual studioを触る機会がなかっ…

モザイクフィルタを作ってみたところ不可解な境界線が現れてしまいました

画像をモザイクにしようと思ってこんなシェーダーを作成していました uniform sampler2D tex; void main() { vec2 uv = floor(texCoord * 30.0) / 30.0; gl_FragColor = texture2D(tex, uv); } 実際に使ってみると↓のような見た目になり、なにやらモザイクの…

シェーダーで条件分岐は遅いらしいのでベクトル演算に置き換えようとしてできなかった話

一般的にシェーダーでの条件分岐は遅いという話がある 今回作ったシェーダーではブレンドモードや使用するマスクのチャンネルをアプリから送信してシェーダー内で利用するということをした これを条件分岐を使って素直に実装するとこんな感じになる(空で書…

Unityのマテリアルエディタ拡張でテクスチャのプロパティを表示する

最近Unityを触っていてマテリアルエディタを拡張したくなったのでテクスチャのプロパティを表示するところから始めてみた 最初は自前でUIを組み立ててどうやらするのかと思ってその方面で調べていたけど、標準のテクスチャプロパティのスタイルであれば Text…

windowsにgccをインストールするメモ

go-glというgolangのopenglラッパーをgo getしようとしたところ、cgoを利用しているようでgccが必要という旨が表示されたのでインストールした MSYS2/MinGW-w64 (64bit/32bit) インストール手順 メモ · GitHub こちらをみて64bitMsys2インストール pacman -S…

IMAPプロトコルでメール通知

思うところがあり、メールが来た時に本文を見て一部をslackに通知したくなった そこで、少し調べているとIMAP4というプロトコルがあるということを知りメール通知 + 本文取得を実装したのでメモ IMAP4プロトコルとは www.sophia-it.com IMAP4は、オンライン…

phantomJS + agouti(golang)でブラウザ操作自動化 事始め

思うところがあり今日はブラウザ操作の自動化を行っていた 丁度golangを勉強中ということもあり、phantomJS + agoutiの組み合わせでやってみた(別にgoでやる必要はありませんが..) 環境 centos6 go version go1.8.3 linux/amd64 phantomjs 2.1.1 インストー…

rubyでslack通知

↓の記事でwhile readしないとうまく動かない理由がわかったので、slack通知の部分を変更した nanka.hateblo.jp 動かない理由はこちら nanka.hateblo.jp 改善版 require 'net/http' require 'uri' require 'json' uri = URI.parse("https://hooks.slack.com/s…

rubyの正規表現で文字列抽出

matchを使うと正規表現で文字列を抽出できる hoge = 'ip = 255.255.255.255' ip = hoge.match(/ip = (\d+\.\d+\.\d+\.\d+)/)[1] puts ip $ ruby -e "hoge = 'ip = 255.255.255.255'; ip = hoge.match(/ip = (\d+\.\d+\.\d+\.\d+)/)[1]; puts ip" 255.255.255…

emscriptenのmakefile

emscriptenで大きめのプロジェクトをビルドする際に必要だと思ったので、今までmakeを書いたことがなかったゆとりPGが調べて書いた Makefile CC=emcc OBJS=main.o class.o main: $(OBJS) $(CC) -o main.html $(OBJS) main.o: main.cpp $(CC) -c main.cpp cla…

windowsでemscriptenを動かす

インストール こちらのURLからインストーラをDL、最初 Emscripten SDK Web Installer で試してみたがうまくインストール出来なかったので、Emscripten SDK Offline Installer を利用 これでインストールすると、clangやpythonなど必要なものは一式揃えてくれ…

2つの日付間の距離を計算する 改

nanka.hateblo.jp ↑の記事で書いた処理に割と無駄があったので、色々試行錯誤した結果↓のコードになった こちらのほうがいくらかスマート var targetDate = Date.parse('2017/04/04 12:34:00'); var timeSpan = Math.floor((Date.parse(targetDate) - Date.n…

bashのメモ ( < << <<< <() )

仕事のbashスクリプトを見ていると<<<や<()が使われていて、初心者の自分には?だったので、調べた結果をメモしておく 正直な話、完全には理解しきれていない.. < (入力リダイレクト) <の後にファイルを指定すると、内容がファイルディスクリプタ0(標準入力)…

2つの日付間の差分を計算する

ネットを漁ると、秒数だけの差分や日数だけの差分が良くヒットするが 今回は、日数・時間・分・秒でそれぞれの差分が必要な場面に遭遇したので内容をメモ javascriptで実装した もっとスマートに書けないものか // 現在時刻 var now = Date.now(); // この記…

imgui導入メモ(directx11)

後ほどじっくり書きたいが、最近directx11を触っている その際途中からimguiという、オープンソースのGUIフレームワークを導入したときのメモ github.com とりあえず動かすには? directx11のサンプルプロジェクトにあるimgui_impl_dx11.{h, cpp}を自分のプ…

スマートポインタの循環参照

なぜメモリリークするのか↓のサイトが詳しい http://marupeke296.com/DXCLS_WeakPointer.html

vc++のwinアプリケーションでコンソール出力

visual studioでwinアプリケーションを作成中にデバッグ出力がしたかったのだが、よい方法が思いつかずに調べていたところ、↓のようにするとコンソールが新しく作成されて標準出力を割り当てることができた FILE *fp; AllocConsole(); freopen_s(&fp, "CON",…