サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
qiita.com/Ushio
今回はハッシュアルゴリズムについて少し触れてみたいと思います。 既存のハッシュアルゴリズムはどういうものがあるでしょうか? SHA-1, MD5等が浮かんだ方も多いと思います。 「じゃあそれでいいじゃん」 ・・・ちょっと待ってください。 SHA-1, MD5というものは、暗号化のためのハッシュアルゴリズムです。 もし用途が単純なファイル比較等であれば、ここまで大げさなハッシュは冗長で高負荷低速であると言えます。 適切なアルゴリズムは状況によって適切に選びたいところです。 そこで今回は単純なファイル比較等に使用できる、簡単&軽量なハッシュアルゴリズムの FNV-1 というアルゴリズムを紹介します。 詳細はこちらへどうぞ http://wowdev.jp/?p=873 ソースはこちらです。 #include <stdio.h> #include <stdint.h> /** * FNV Con
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
ここでいうLUTはルックアップテーブルの略です。 まずはそのLUTで画像処理をするとはどういう事かというのを書こうかと思ったのですが、 UE4の説明が分かりやすいのでそれを見てみるのが早いでしょう。 https://docs.unrealengine.com/latest/JPN/Engine/Rendering/PostProcessEffects/ColorGrading/index.html 要するに、色をテーブルで変換するだけです。 テーブルというのは、以下のような画像です。 これを見るとそれぞれの四角で、 xがR成分 yがG成分 そして右のセルに行くほどB成分が0~1へとグラデーションされています。 これによってRGBそれぞれの成分がどう配置されるかが定義されています。 ※もちろん、この画像は1:1のマッピングなので、フィルター的には何もしないものです。 しかし、ひとたびこの画像
のようになります。このように反射だけでなく、透過&拡散を考えた関数をBRDFと区別し、BSDF (Bidirectional Scatter distribution function) と呼びます。髪や毛皮のレンダリングにおいては、このBSDFをいかに物理的により正確かつ効率的に計算するかというのが、一つの大きな焦点になっています。ただ、一応注意したい点として今回BSDFを考えるのは、髪や毛皮はBSDFで表現できるという意味ではなく、髪や毛皮はBSDFで表現できると仮定して話を進めると一応確認しておきます(この場合というより、数式で自然現象を説明するときは大体こうなる気がしますが・・・)。これはレンダリング時に毛の太さがピクセルよりも十分に細く、内部での複雑な拡散の挙動は無視できる、割に合わないといってもいいでしょう。というわけで、このBSDFをいかに実装するのかが今回の目標となります。
imguiとは imguiは、OpenGLやDirectXなどの描画環境の中で動くGUIフレームワークです(vulkanも?)。 "Immediate Mode GUI"と呼ばれるパラダイムにより、大変短く直感的なコードでGUIを構築できます。 どういうGUIコンポーネントが使えるかは、リポジトリのスクショを見ていただいたほうが良いかと思います。 デバッグや調整、テスト用のGUIを構築することが目的のフレームワークです。 環境 今回この記事ではwindows10, vs2015, Cinder(0.9.0)上でサンプルを作成しました。 Cinder用には専用のimgui拡張があるため、そちらを使用します。 https://libcinder.org/ https://github.com/simongeilfus/Cinder-ImGui 根本的な考え方や、imguiのAPIは同じですが、
目標 色は非常に私達の生活に密着していて、当たり前のように存在しているにも関わらず、いざ真面目に扱おうとするとよくわからなくなってしまうものではないでしょうか。 色の知見というのは非常に幅広く、無限に広がっていってしまう上、表色系周りの話では抽象的になりがちで難解です。そこで現状さまざまな基礎になるRGB表色系、XYZ表色系周辺の理解を目的として、寄り道をしながらもストーリー立ててまとめてみようと思います。 プログラムコードとしてはC++で記載します。(それほどでてきませんが) 色ってなんだろう? 色の正体を探してみましょう。 まず色を感じる体の部位というのはやはり目です。皮膚や耳や舌では感じられません。また、目を閉じてみると、強い明かりが周りになければ、真っ暗闇で色は見つけることはできません。 ここかやらやはり目が色にとっては重要なようです。 次に明かりを消してみます。するとまたもや色は
はじめに レイトレーシングにおいて、結局のところ放射輝度とは何なのか?今までひとつずっともやもやが取れませんでした。とても重要なものさしなので、しっかり理解したいところです。なのでゼロからひとつひとつ落ち着いて紐解いて、クリアにしていきたいと思います。 光をどう捉えればいいのだろう? 現実世界はとても複雑な物理現象に満ちています。光と一口にいったって、波なのか粒子なのかといった量子力学的な話まで踏み込むととても大変です。きっと今わかっていること以外にもまだまだ隠された謎があって、これからどんどん解明されていくのでしょう。でも私達が普段目で観察できるような物体は、光の波長に比べてとてもスケールの大きな話になります。なのでレイトレーシングにおいては基本的には光のマクロ的特性だけで考えます。これはスケールの大きな世界では古典力学で日常のかなりの部分を説明できるのととても良く似ています。なので光は
もはや何周遅れかわかりませんが、 元ネタは深津さんの以下のツイートです。 アニメーションの監修で、「 Random();の代わりに、(Random()+Random()+Rrandom()+Random()+Random())/5.0f; を使うと、動きにコクが出る」と言ったら、ピュアオーディオ扱いされるのですが・・・これは根拠のあるアルゴです。 — 深津 貴之 (@fladdict) 2016年11月3日 実際のところ、任意の分布をもつ確率変数の無限和というのは正規分布に近づくというのはわかっています。 これはKOMIYAさんの記事でも解説されております。 「一様乱数の平均値を正規乱数として代用する」という話をゆるふわ統計的に検証する ただこの記事にもありますが、コクの話は、 「一様乱数でもなく正規乱数でもなく、でもちょっと正規分布に従っているっぽい乱数」 がよりそれっぽい動きやビジュア
小さな親切 余計なお世話 osxには、普通に使う上では便利でも、場合によっては余計なお世話な機能が結構沢山備わっています。なのでそれらを停止させて、マシンに余計なことをさせたくない場合に重宝するコマンド群をこの記事では紹介していきます。 環境はosx 10.11 あたりを想定しています。 設定を閉じる まずコマンドで設定をあれこれ変更する前には設定アプリを落としたほうが良いです。
cerealって? cerealとは、C++11用のjson, xml, binaryシリアライズライブラリです。似たようなものにboost::serializationや、googleのprotocol buffersなどがあります(ほかにもまだありそうですが)。 ではなぜcerealなのか? cerealには他の二つにはない利点として、 ヘッダーオンリー ライブラリが小規模 というのがあります。 この性質は移植作業を大変楽にしてくれます。 というのも自分、boost::serializationをしばらく使っていたのですが、iOSでも使おうとしてビルドで問題がおきて、もっと良いシリアライズライブラリがないものかと探した経緯があります。 シリアライズしたいケースとして、異なるプラットフォーム同士で通信するプログラムを作りたいケースがありますので、この性質は大いに作業を楽にしてくれます。
皆さんこんにちは、レイ、飛ばしてますでしょうか? これはレイトレ Advent Calender 2016 11日目の記事です。 自分はいったん飛ばすのを休憩して、今更高校のときすっ飛ばした数Ⅲを、 坂田アキラの 数IIIの微分積分が面白いほどわかる本 にて勉強したりしてました。 とても気持ちのいい問題が多く、サクサク進むことができました。おすすめです。 ゴール さて、本題ですが、確率的な考え方はレイトレにおいてとても大事です。Veach氏の論文においても、最初の方から登場します。PBRT v3では748ページが該当箇所でしょうか。しかしこの本、圧倒的ボリュームですね。。。 今回は確率の数学を積分の問題へ適用するところを、直観的理解を目指してまとめていきたいと思います。 なので数式はなるべく省略しないよう、心がけたいと思います。 確率密度関数(probability density fun
qiita.com/Ushio@github
\frac { 1 }{ { c }^{ 2 } } \frac { { \partial }^{ 2 }u(x,y,t) }{ { \partial }{ t }^{ 2 } } =\frac { { \partial }^{ 2 }u(x,y,t) }{ { \partial }{ x }^{ 2 } } +\frac { { \partial }^{ 2 }u(x,y,t) }{ { \partial }y^{ 2 } } 今回は、二次元波動方程式を差分法にて数値積分を試みます。 二次元程度でしたら、一般的なコンピュータならリアルタイムにその時間発展を観察することができるので、とても楽しいです。 導出についてはこちら 波動方程式の導出(弦の運動) - Qiita 式変形 コンピュータに数値計算させるためには、ある程度時間(t)と空間(x)を細かく区切って進めるような式を準備してあげる
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? レイトレ合宿 参加レポート 運営をやって頂いているみなさん、参加者のみなさん、どうもお疲れ様でした。そしてありがとうございました。今回初参加させていただきましたが、大変有意義な時間を過ごせて感激です。熱が冷めないうちに、参加レポートとしてまとめておこうと思います。 環境 AWS, c4.8xlargeでのレンダリングになります。Microsoft Windows Server 2012 R2 年々短くなっています。来年は1秒かもしれませんね(白目 AWSのアカウントがあれば気軽にテストできたのがよかったです。 Open Problems
iPhoneの解像度が増えた影響で、アイコンなどにベクターデータを使うメリットが増してきています。 ただ、iOS標準フレームワークではこの辺りはちょっとばかしかゆいところに手が届かないところです。 今回は小さな対応策の1つとして、 SVGのpath d要素をCGPathに変換する、 というのをやろうと思います。 この方法には、 ・svg全部パースするより遥かに簡単 ・読み込んだCGPathRefは描画前に編集したり、描画方法を自由にカスタマイズできる といったメリットがあります。 また、SVGKit( https://github.com/SVGKit/SVGKit )なんかもありますが、 ちょっとわりと大きなフレームワークなので、 一部だけSVG使いたいだけの時にはちょっとオーバースペックな気がします。 というわけでソースです。 コピペしてすぐ使い始めることができます。 https://
ローレベルグラフィックスAPI、Metal、せっかく出たからには使ってみないわけにはいきません。 残念なことに、あんまり使ってみた等の情報が少ないです。 せっかくなので、とっかかりとして流体シミュレーションにチャレンジします。 非常に素直なAPIで、OpenGL ES等と比べるとクリーンで明瞭なので、 とても扱いやすい印象でした。 詳細はこちら http://wowdev.jp/?p=1380 勉強会でのスライドも公開しています http://www.slideshare.net/ushiostarfish/metal-fuild-simulation 手っ取り早くソースが欲しい方はこちら https://github.com/Ushio/MetalFluidDemo デモの動画はこちらです。 https://flic.kr/p/oBpSPo 注意点としては、A7チップを持つデバイスでしか
正直、初見の時の可読性が落ちるので微妙かもしれませんが、 発想の1つとしてメモしてみます。 blocksをその場ですぐ使う事で、NSMutableArrayのスコープを最小限にして、その後をNSArrayとして固定してしまいます。 NSMutableArrayがだらだらと下に残ってしまうのを防ぐ事が出来ます。 Mutable系のオブジェクトでは全て可能です。 NSArray *array = ^{ NSMutableArray *r = [NSMutableArray array]; for(int i = 0 ; i < 100 ; ++i) { [r addObject:@(i)]; } return r; }(); for(NSNumber *n in array) { NSLog(@"%@", n); } Register as a new user and use Qiita m
NSCalendar *callendar = [NSCalendar currentCalendar]; NSDate *now = [NSDate date]; NSDateComponents *birthdayComponents = [[NSDateComponents alloc] init]; birthdayComponents.year = 1976; birthdayComponents.month = 2; birthdayComponents.day = 27; NSDate *birthday = [callendar dateFromComponents:birthdayComponents]; NSCalendarUnit unit = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
blocksには数多くの落とし穴があります。 しかしそれを乗り越えることができれば、非常にスマートにかける状況はそれなりに増えると思います。 ※注意:ここではARC環境での話です。一部MRCと状況が異なる場合があるかもしれません。 <blocksはObjective-cのオブジェクトをstrong参照でキャプチャする> ここでいうキャプチャとは、ポインタをコピーしている、ということです。 なんで?と思われる方も多いと思います。しかし理由ははっきりしていています。 例えば、dispatch_afterで処理を遅延することを考えてみましょう。 NSArray *sameArray = ...; int64_t delayInSeconds = 2.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSecon
: CGContextSaveGState: invalid context 0x0 : CGContextSetCompositeOperation: invalid context 0x0 : CGContextFillRects: invalid context 0x0 : CGContextRestoreGState: invalid context 0x0 : CGContextSetBlendMode: invalid context 0x0 : CGContextDrawImage: invalid context 0x0 : CGBitmapContextCreateImage: invalid context 0x0 : CGContextSaveGState: invalid context 0x0 : CGContextSetCompositeOperation: i
動画はこちら http://www.flickr.com/photos/80124738@N05/9564307258/ カウンターアプリで、 タップで瓶の中に金平糖が入ることで数えます。 上に名前をつけたり、 ロングタップで削除したり、 瓶を増やしたりできます。 ダウンロードはこちらからお願いします。無料です。 https://itunes.apple.com/jp/app/crystalsuger/id689723657?ls=1&mt=8 完全なソースコードはこちらに公開しています。 https://github.com/Ushio/CrystalSuger このソースから得られる技術は以下の通りです。 ・OpenGL ES 2.0 shader 技術全般 ・マルチビューGLレンダリング ・基本的なポストプロセッシングの実装 ・ビュー空間 スペキュラ・リムライティングの効率的実装 ・
次のページ
このページを最初にブックマークしてみませんか?
『@Ushioのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く