マテリアルの利用 - actnwit/RhodoniteTS GitHub Wiki
Materialの作成
Rhodoniteには多くのマテリアルクラスがあります。これらを生成するには、ヘルパーオブジェクトであるMaterialHelperを使います。
const material = Rn.MaterialHelper.createPbrUberMaterial()
Materialへのシェーダーパラメーター設定
シェーダーパラメータの設定は、そのシェーダーを保持しているMaterialクラスに対して行います。
material.setParameter(Rn.ShaderSemantics.BaseColorFactor, Rn.Vector4.fromCopy4(1, 1, 1, 1));
テクスチャをシェーダーに渡す場合は、以下のようにします。
const rnTexture = new Rn.Texture();
texture.generateTextureFromUri('/path/to/texture.png');
const rnSampler = new Rn.Sampler({
magFilter: Rn.TextureParameter.Linear,
minFilter: Rn.TextureParameter.Linear,
wrapS: Rn.TextureParameter.ClampToEdge,
wrapT: Rn.TextureParameter.ClampToEdge,
});
rnSampler.create();
material.setTextureParameter(Rn.ShaderSemantics.BaseColorTexture, rnTexture, rnSampler);
Materialの適用
作成したMaterialはPrimitiveやMeshHelperオブジェクトのメソッド群で使用することができます。 それらのPrimitiveやMeshは指定されたMaterialが適用されて描画されます。
const primitive = Rn.Primitive.createPrimitive({
indices: indices,
attributeSemantics: [Rn.VertexAttribute.Position.XYZ],
attributes: [positions],
primitiveMode: Rn.PrimitiveMode.Lines,
});
primitive.material = mateiral;
const sphere = Rn.MeshHelper.createSphere({
radius: 1,
widthSegments: 10,
heightSegments: 10,
material: material
})