예제 #1
0
    public Material(
        ShaderSet shaderSet,
        Pipeline pipeline,
        ResourceSet materialResourceSet)
    {
        Id = shaderSet.GetNextMaterialId();

        ShaderSet           = shaderSet;
        Pipeline            = pipeline;
        MaterialResourceSet = materialResourceSet;

        // Bit 24-31: ShaderSet
        RenderKey |= (ShaderSet.Id << 24);

        // Bit 16-23: Material
        RenderKey |= (Id) << 16;
    }
예제 #2
0
    public Material(
        ShaderSet shaderSet,
        Pipeline pipeline,
        ResourceSet materialResourceSet,
        SurfaceType surfaceType)
    {
        Id = shaderSet.GetNextMaterialId();

        ShaderSet           = shaderSet;
        Pipeline            = pipeline;
        MaterialResourceSet = materialResourceSet;

        // Bit 31: SurfaceType
        RenderKey |= ((int)surfaceType) << 31;

        // Bit 23-30: ShaderSet
        RenderKey |= (ShaderSet.Id << 23);

        // Bit 15-22: Material
        RenderKey |= (Id) << 15;
    }