init(floatLiteral:)
Creates an object to specify the amount of roughness, using a single value that applies to the entire material.
Declaration
init(floatLiteral value: Float)Parameters
- value:
The roughness value.
Discussion
The roughness property represents how much the surface of the entity scatters light that it reflects. A material with a high roughness has a matte appearance, and one with a low roughness has a shiny appearance.
[Image]
The following Swift code shows how to specify roughness using a single value for the entire entity:
material.roughness = PhysicallyBasedMaterial.Roughness(floatLiteral: 0.0)With custom materials, the roughness value is available in your surface shader; however, RealityKit doesn’t use it automatically to render the entity. To render an entity with roughness, the material’s lightingModel needs to be CustomMaterial.LightingModel.lit or CustomMaterial.LightingModel.clearcoat, and call params.surface().set_roughness() from its surface shader function.
The following Metal code shows how to retrieve the roughness value set using this initializer in your surface shader:
// Retrieve the roughness scale from the CustomMaterial.
float roughnessScale = params.material_constants().roughness_scale();
// Set the roughness value using the roughness scale.
params.surface().set_roughness(roughnessScale);For more information on creating custom materials and writing shader functions, see Modifying RealityKit rendering using custom materials.