memomem

備忘録・メモ置き場

PointCloud Unity vol.2, PSIZEとDirectX対応

github.com

上記のプロジェクトなど点群のサイズを指定するのに下記の用にShader中でPSIZEが使われるが、これがDirectX11,12では動作しない。 サイズ指定が反映されず、点のサイズでしか表示されない。

struct v2f {
    float4 pos: POSITION;
    fixed4 col: COLOR;
    float size: PSIZE; // MeshTopology.Points の際の頂点の描画サイズを表す定義済セマンティクス
    float4 center: TEXCOORD0; // 描画する四角形の中心の座標
    float dist: TEXCOORD1; // 描画する頂点とカメラの間の距離
};

GitHub - keijiro/Pcx: Point cloud importer & renderer for Unity にも

These size properties are only supported on some platforms; It may work with OpenGLCore and Metal, but never work with D3D11/12.

と記載がある。

上記Pcxでは点群の描画にGeometoryShaderが使用されている。 下記は、PointCloudVRの点群描画をPcxを参考に、GeometoryShaderで描画するようにしたShader

DirectX11で動かなかった、、描画されない。

v2g, g2f を整理し不要な記述を削除し、PcxからのGeometryを追加しただけ。




参考

qiita.com

blog.negativemind.com