MCPcopy Create free account
hub / github.com/GPUOpen-Tools/compressonator / GetProjectedIndex

Function GetProjectedIndex

cmp_core/shaders/bc7_encode_kernel.cpp:981–1105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

979}
980
981void GetProjectedIndex(CGV_UINT8 projected_index_out[MAX_SUBSET_SIZE], //output: index, uncentered, in the range 0..clusters-1
982 CGV_FLOAT image_projected[SOURCE_BLOCK_SIZE], // image_block points, might be uncentered
983 CGV_INT clusters, // clusters: number of points in the ramp (max 16)
984 CGV_INT numEntries)
985{ // n - number of points in v_ max 15
986 CMP_di what[SOURCE_BLOCK_SIZE];
987 CGV_FLOAT image_v[SOURCE_BLOCK_SIZE];
988 CGV_FLOAT image_z[SOURCE_BLOCK_SIZE];
989 CGV_FLOAT image_l;
990 CGV_FLOAT image_mm;
991 CGV_FLOAT image_r = 0.0F;
992 CGV_FLOAT image_dm = 0.0F;
993 CGV_FLOAT image_min;
994 CGV_FLOAT image_max;
995 CGV_FLOAT image_s;
996
997 SetDefaultIndex(projected_index_out);
998
999 image_min = image_projected[0];
1000 image_max = image_projected[0];
1001
1002 for (CGV_INT i = 1; i < numEntries; i++)
1003 {
1004 if (image_min < image_projected[i])
1005 image_min = image_projected[i];
1006 if (image_max > image_projected[i])
1007 image_max = image_projected[i];
1008 }
1009
1010 CGV_FLOAT img_diff = image_max - image_min;
1011
1012 if (img_diff == 0.0f)
1013 return;
1014 if (cmp_isnan(img_diff))
1015 return;
1016
1017 image_s = (clusters - 1) / img_diff;
1018
1019 for (CGV_UINT8 i = 0; i < numEntries; i++)
1020 {
1021 image_v[i] = image_projected[i] * image_s;
1022 image_z[i] = cmp_floor(image_v[i] + 0.5F - image_min * image_s);
1023 projected_index_out[i] = (CGV_UINT8)image_z[i];
1024
1025 what[i].image = image_v[i] - image_z[i] - image_min * image_s;
1026 what[i].index = i;
1027 image_dm += what[i].image;
1028 image_r += what[i].image * what[i].image;
1029 }
1030
1031 if (numEntries * image_r - image_dm * image_dm >= (CGV_FLOAT)(numEntries - 1) / 8)
1032 {
1033 image_dm /= numEntries;
1034
1035 for (CGV_INT i = 0; i < numEntries; i++)
1036 what[i].image -= image_dm;
1037
1038 CGV_UINT8 tmp_index;

Callers 1

GetQuantizeIndexFunction · 0.85

Calls 3

SetDefaultIndexFunction · 0.85
cmp_floorFunction · 0.85
clampIndexFunction · 0.85

Tested by

no test coverage detected