Skip to content

マテリアルの利用

Yuki Shimada edited this page Jun 29, 2024 · 7 revisions

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はPrimitiveMeshHelperオブジェクトのメソッド群で使用することができます。 それらの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
  })
Clone this wiki locally