webgcode

Форк
0
/
max_value.frag 
37 строк · 1.1 Кб
1
// expected #define: int gridX, gridY
2
highp float encodingFactor = (exp2(24.0) - 1.0) / exp2(24.0);
3
const vec2 gridSize = vec2(gridX, gridY);
4

5
uniform sampler2D modelHeight;
6
//we will scale the result by that value, it helps for chaining renderers
7
uniform float scale;
8

9
highp float DecodeFloatRGB(vec3 rgb) {
10
    return dot(rgb, vec3(1.0, 1.0 / 255.0, 1.0 / 255.0 / 255.0)) / encodingFactor;
11
}
12

13
highp vec3 EncodeFloatRGB(highp float v) {
14
    highp vec3 enc = fract(vec3(1.0, 255.0, 255.0 * 255.0) * encodingFactor * v);
15
    enc -= enc.yzz * vec3(1.0 / 255.0, 1.0 / 255.0, 0.0);
16
    return enc;
17
}
18

19
vec3 FakeEncodeFloatRGB(highp float v) {
20
    return vec3(v, 0.0, 0.0);
21
}
22

23
highp float FakeDecodeFloatRGB(vec3 rgb) {
24
    return rgb.r;
25
}
26

27
float readValue(int dx,int dy) {
28
    return FakeDecodeFloatRGB(texture2D(modelHeight, vec2(float(dx), float(dy)) / gridSize).rgb);
29
}
30

31
void main() {
32
    float maxValue = readValue(0, 0);
33
    for(int i = 0; i < gridX; i++)
34
        for(int j = 0; j < gridY; j++)
35
            maxValue = max(maxValue, readValue(i, j));
36
    gl_FragColor = vec4(FakeEncodeFloatRGB(maxValue * scale), 1.0);
37
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.