syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

GPGPU戦争の歴史を紐解く ―勃発から現在に至るまで―

GDC 2015でついにOpenCL 2.1が発表されました。SPIR-V中間表現(中間言語、バイトコード)でプログラミング基盤をVulkan API (OpenGL Next Generation, glNext) と共有することができるそうです。これでカーネルをオフラインコンパイルできるようになります…

NVIDIA/AMDのDirectX 11.x/12対応に関して

NVIDIAの場合 GeForce GTX 970のメモリ3.5GB問題で、嘘スペック(なんちゃって4GB他)を公表していたがために訴訟を起こされてしまったNVIDIAですが、実はDirectX (Direct3D) 対応レベルに関してもわりとあこぎなことをやっているというか実際詐欺です。Ferm…

科学技術英文を翻訳するコツ

仕事柄、ネイティブ英語圏の開発者と英文メールをやりとりすることがあるんですが、ときにはローカライズ作業などで英文を日本語に翻訳しなければならないこともあります。もちろんその逆もあります。自分は技術者なので、先方とやりとりする英文の文法自体…

NVIDIAのOpenCL対応状況

NVIDIAのOpenCLドライバーはIntelやAMDと比べて規格への対応が遅く、2015年2月時点でもOpenCL 1.1どまりです。NVIDIAのOpenCL SDKとなるCUDA Toolkitも、7.0時点でOpenCL 1.1までしか対応していません(cl.hに定義されているのはCL_VERSION_1_1まで)。例え…

F#でファイル・フォルダーをごみ箱へ移動

Visual Studioのバージョン2010以降をインストールすると、拡張子.fsxにVisual Studioが関連付けられ*1、さらにコンテキストメニューに「Run with F# interactive...」というコマンドが追加されます。.fsxはF#スクリプトと呼ばれるファイルなのですが、Visua…

先輩、今年もよろしくお願いしますね

【Fate】「先輩、今年もよろしくお願いしますね」イラスト/sygh[sai] [pixiv]年末に体調を崩してなかなか年賀絵を描けなかったんですが、ずっと妄想していた和装の桜を描くことができてひとまず肩の荷が降りました。 本年もぼちぼちコードを書いたりイラスト…

CUDA Warpシャッフル命令のエミュレーション

今更ですがせっかくCompute Capability 3.0対応のKepler世代グラフィックスカードを手に入れたので、CUDAのWarpシャッフル命令の動作テストを兼ねて、代替機能をエミュレートする関数を書いてみました。 Visual Studio 2012、CUDA 6.5、GeForce GTX 770で動…

VS 2008のWPF-MFC相互運用

(これは2011-03-18に書いた故OCNブログの記事を移植したものです)以下を参考に、MFC アプリから WPF を使おうとして、Visual Studio 2008 SP1 のバグに遭遇しました。 WPF ユーザー コントロールを HwndSource 経由でホストする Win32 アプリ……といいつつ…

CButtonとCMFCButtonの比較

(これは2010-06-20に書いた故OCNブログの記事を移植したものです)Visual Studio 2008 SP1にて導入された、MFC Feature Pack付属のCMFCButtonは、従来のCButtonに比べてかなり強力です。微妙に使い勝手が違う部分もありますが、ボタンの文字色変更とか、画…

CScrollViewの代わりにCViewでスクロール

(これは2010-09-07に書いた故OCNブログの記事を移植したものです)MFCのCScrollViewは便利なんですが、画像編集ソフトのようなものを作ろうとしたとき、いかんせん細かい制御がしづらいというか、CScrollView::SetScrollSizes()などのユーティリティ メンバ…

ATL::CPathユーティリティ

(これは2010-10-31に書いた故OCNブログの記事を移植したものです)Visual C++ 付属の ATL にはわりと便利なユーティリティ クラスがあるんですが、あまり知られてないのでひとつ紹介します。ATL::CPathこいつは Windows Shell API の Path*関数を薄くラップ…

WinSDKおよびATLのCOMユーティリティ

(これは2010-11-23に書いた故OCNブログの記事を移植したものです)MSXMLなどのCOMタイプ ライブラリを#importしたときなど、COMを扱うときによく見かけるのが、Visual C++ CRTヘルパーの _bstr_t クラスと _variant_t クラス(comutil.h)です。それぞれ、C…

MFC-CLI 相互運用時の注意点‏

(これは2011-05-09に書いた故OCNブログの記事を移植したものです)それなりに規模の大きい MFC プロジェクトなどで、共通言語ランタイムのサポート /clr を追加して .NET ハイブリッド アプリケーションを作るときに、起動時に EETypeLoadException 例外が…

MFCのCFileDialog::SetDefExt()の引数の型について

(これは2010-06-05に書いた故OCNブログの記事を移植したものです) バグの発見、MS Connect への報告と顛末 Visual Studio 2008/2010 の MFC 9.0/10.0 では、CFileDialog::SetDefExt() の引数の型が間違っていて、本来 LPCTSTR (LPCWSTR for UNICODE / LPCS…

Effects10, Effects11の実行時コンパイル

(これは2013-05-11に書いた故OCNブログの記事を移植したものです)以前書いた、「Effects11 for Windowsストア アプリ」の記事とは趣旨が逆行する話ですが、一応参考程度に書き残しておきます。デスクトップ アプリでは実行時コンパイルを使うこともできま…

Effects11 for Windowsストア アプリ

(これは2013-04-13に書いた故OCNブログの記事を加筆修正したものです)今回は旧D3DXライブラリの歴史にちょっとだけ触れるので、前置きが長いです。Windowsストア アプリを開発できるVisual Studio 2012用のDirectX SDK(Windows SDK 8.0)では、これまでDi…

Photoshopでゴッドレイ

(これは2012-06-07に書いた故OCNブログの記事を移植したものです)ゴッドレイっていうのはいわゆるエンジェルラダー(天使の梯子)とかのアレです。雲間などから光条が漏れているような効果のことです。英語では"God rays"とか"Crepuscular rays"と言うそう…

HDDの移行作業

(これは2011-06-27に書いた故OCNブログの記事を移植したものです)自作PCを最初(2007年)に組んだときの160GBと後から追加した400GBだけではそろそろ容量が足らなくなってきた上に、メインOS(Windows 7)のシステム ドライブが圧迫されてきたので、以前買…

ライセンスゆるめの日本語無償フォント

(これは2010-10-16に書いた故OCNブログの記事を加筆修正したものです)当方お勧めの無料で使える日本語フォントです。漫画やイラスト、Webサイト/ゲーム制作などで使えます。いずれも商用利用可ですが、不特定多数に公開する作品などで利用する際は事前・…

Visual C++ 2010 SP1でのMFC拡張

(これは2011-05-27に書いた故OCNブログの記事を移植したものです)Microsoftが.NETに注力を始めてからずいぶんと影が薄くなったのが、Visual C++向けのWin32 APIラッパー/デスクトップアプリケーションフレームワークであるMFCなんですが、VC 2010になって…

GDI+でアンチエイリアスEMFを作成

(これは2012-09-08に書いた故OCNブログの記事を移植したものです)MFCのCMetaFileDCでWindows拡張メタファイル(EMF)を作成した場合、たとえGdiplus::Graphics::FromHDC()でバインドしたGDI+グラフィックスを使ってそのメタファイルを描画してもアンチエイ…

Visual Studioの読み取り専用ファイル編集確認ダイアログ

(これは2013-05-11に書いた故OCNブログの記事を移植したものです)Visual Studioで読み取り専用ファイルを編集しようとしたら、「読み取り専用ファイルを編集」というタイトルで、「編集しようとしたファイル XXX はディスクで読み取り専用です。ファイルを…

ショートカットファイル(.lnk)をC#で読込・解析・編集・作成

Windows 8.1用にHDDを移行したとき、昔使っていた古いドライブレターをいくつか廃止して統合したので、参考資料画像群*1のしおりとして残しておいたショートカットファイル(*.lnk)のリンク切れが大量に発生しました(リンク先の実体ファイルは別ドライブの…

SAIの不具合

(これは2011-07-27に書いた故OCNブログの記事を加筆修正したものです)現在判明しているPaint Tool SAI 1.1.0の不具合。Windows 7 SP1 x64、WACOM Bamboo MTE-450で確認。 ファイルに名前を付けて保存した直後に、タブレットの筆圧感知がときどき効かなくな…

OK/Cancelボタンの配置順

WindowsとMacそれぞれの、ユーザー確認ダイアログにおけるOKボタンとキャンセルボタンの位置(順序)の違いに関して、下記に考察が記載されています。 「OK」と「キャンセル」、どちらが有効か - @IT そういえば、JavaのダイアログもMacと同じ順序です(日…

64bit版Photoshop CS4/CS5の筆圧感知

PhotoshopはCS4からブラシの入り抜き(筆圧感知)がだいぶ改善されたんですが、64bit版PhotoshopではWACOMドライバー起因*1で筆圧感知がおかしくなることがあるらしいです。Windows 8.1 x64とVer.5.05-7ドライバー、Photoshop CS5で試した結果が以下*2。ペン…

Honey × Phantom

ハピネスチャージプリキュア! - 「Honey × Phantom」/「sygh[sai]」のイラスト [pixiv]「ハピネスチャージプリキュア!」より、キュアハニーとプリキュアハンター・ファントムです。ファントム結構好きなんですよね。かなわぬ恋心を秘めて主に仕える、実直で…

マネージリソースアセンブリの解析

.NETのマネージリソースアセンブリを解析するC#コンソールプログラムのサンプルです(Visual Studio 2012で動作確認)。 非ASCII文字を含む文字列をValueに持つようなエントリー群をXMLファイルに書き出します。なんでこんなことをしようかと思ったかという…

Windows SDKと旧DirectX SDK

DirectX SDKはJune 2010がリリースされた後、まったく新しいバージョンが出ない時期が続いたんですが、Visual Studio 2012にバンドルされているWindows SDK 8.0において、DirectX SDKはWindows SDKと統合されました。 Windows SDK for Windows 8 – Windows a…

正規分布する乱数の生成(中心極限定理/Box-Muller)

コンピュートシェーダーでブラウン運動のシミュレーションを実装しようと思ったんですが、そのためにはまず正規乱数(正規分布する乱数)を生成する必要がありそうなので、まず自前のCPU向けコードで正規乱数を作るテストプログラムを書くことにしました。 …