Material Clustering Benchmark
DispatcherKM.cs
Go to the documentation of this file.
1using UnityEngine;
2
4{
6 {
8 ComputeShader computeShader,
13 )
14 : base(
20 ) { }
21
22 public override string name => "KM";
23
24 public override bool doesReadback => false;
25
26 /// <summary>
27 /// Each iteration first attributes pixels to clusters,
28 /// then updates cluster centers.
29 /// In order to use the resulting cluster centers,
30 /// one final cluster attribution is required!
31 /// </summary>
32 public override void RunClustering(ClusteringTextures clusteringTextures)
33 {
34 for (int i = 0; i < this.numIterations; i++)
35 {
36 this.KMiteration(clusteringTextures, rejectOld: false);
37 }
38 }
39
40 /// <summary>
41 /// First attributes pixels to clusters.
42 /// Then updates cluster centers.
43 /// In order to use the resulting cluster centers,
44 /// one final cluster attribution is required!
45 /// </summary>
46 protected void KMiteration(ClusteringTextures textures, bool rejectOld)
47 {
48 this.AttributeClustersKM(textures);
49 this.UpdateClusterCenters(textures, rejectOld);
50 }
51
52 public override void SingleIteration(ClusteringTextures textures)
53 {
54 this.computeShader.SetBool(
55 "do_random_sample_empty_clusters",
57 );
58 this.computeShader.SetInt("num_clusters", this.clusteringRTsAndBuffers.numClusters);
59
60 this.KMiteration(textures, rejectOld: false);
61 }
62 }
63}
ClusteringRTsAndBuffers clusteringRTsAndBuffers
Definition: ADispatcher.cs:11
void AttributeClustersKM(ClusteringTextures clusteringTextures)
Definition: ADispatcher.cs:87
void UpdateClusterCenters(ClusteringTextures clusteringTextures, bool rejectOld)
Definition: ADispatcher.cs:55
readonly ComputeShader computeShader
Definition: ADispatcher.cs:28
Call Allocate before using and Dispose after using.
override void SingleIteration(ClusteringTextures textures)
Definition: DispatcherKM.cs:52
override void RunClustering(ClusteringTextures clusteringTextures)
Each iteration first attributes pixels to clusters, then updates cluster centers. In order to use the...
Definition: DispatcherKM.cs:32
void KMiteration(ClusteringTextures textures, bool rejectOld)
First attributes pixels to clusters. Then updates cluster centers. In order to use the resulting clus...
Definition: DispatcherKM.cs:46
DispatcherKM(ComputeShader computeShader, int numIterations, bool doRandomizeEmptyClusters, bool useFullResTexRef, ClusteringRTsAndBuffers clusteringRTsAndBuffers)
Definition: DispatcherKM.cs:7
Call Dispose after using.