tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

gpu_buffer.glsl (2607B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2  * License, v. 2.0. If a copy of the MPL was not distributed with this
      3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 uniform HIGHP_SAMPLER_FLOAT sampler2D sGpuBufferF;
      6 uniform HIGHP_SAMPLER_FLOAT isampler2D sGpuBufferI;
      7 
      8 ivec2 get_gpu_buffer_uv(HIGHP_FS_ADDRESS int address) {
      9     return ivec2(uint(address) % WR_MAX_VERTEX_TEXTURE_WIDTH,
     10                  uint(address) / WR_MAX_VERTEX_TEXTURE_WIDTH);
     11 }
     12 
     13 vec4[2] fetch_from_gpu_buffer_2f_direct(ivec2 uv) {
     14     return vec4[2](
     15         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(0, 0)),
     16         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(1, 0))
     17     );
     18 }
     19 
     20 vec4[3] fetch_from_gpu_buffer_3f_direct(ivec2 uv) {
     21     return vec4[3](
     22         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(0, 0)),
     23         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(1, 0)),
     24         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(2, 0))
     25     );
     26 }
     27 
     28 vec4[4] fetch_from_gpu_buffer_4f_direct(ivec2 uv) {
     29     return vec4[4](
     30         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(0, 0)),
     31         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(1, 0)),
     32         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(2, 0)),
     33         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(3, 0))
     34     );
     35 }
     36 
     37 vec4[5] fetch_from_gpu_buffer_5f_direct(ivec2 uv) {
     38     return vec4[5](
     39         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(0, 0)),
     40         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(1, 0)),
     41         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(2, 0)),
     42         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(3, 0)),
     43         TEXEL_FETCH(sGpuBufferF, uv, 0, ivec2(4, 0))
     44     );
     45 }
     46 
     47 vec4 fetch_from_gpu_buffer_1f(HIGHP_FS_ADDRESS int address) {
     48     ivec2 uv = get_gpu_buffer_uv(address);
     49     return texelFetch(sGpuBufferF, uv, 0);
     50 }
     51 
     52 vec4[2] fetch_from_gpu_buffer_2f(HIGHP_FS_ADDRESS int address) {
     53     ivec2 uv = get_gpu_buffer_uv(address);
     54     return fetch_from_gpu_buffer_2f_direct(uv);
     55 }
     56 
     57 vec4[3] fetch_from_gpu_buffer_3f(HIGHP_FS_ADDRESS int address) {
     58     ivec2 uv = get_gpu_buffer_uv(address);
     59     return fetch_from_gpu_buffer_3f_direct(uv);
     60 }
     61 
     62 vec4[4] fetch_from_gpu_buffer_4f(HIGHP_FS_ADDRESS int address) {
     63     ivec2 uv = get_gpu_buffer_uv(address);
     64     return fetch_from_gpu_buffer_4f_direct(uv);
     65 }
     66 
     67 vec4[5] fetch_from_gpu_buffer_5f(HIGHP_FS_ADDRESS int address) {
     68     ivec2 uv = get_gpu_buffer_uv(address);
     69     return fetch_from_gpu_buffer_5f_direct(uv);
     70 }
     71 
     72 vec4 fetch_from_gpu_buffer_1f_direct(ivec2 uv) {
     73     return texelFetch(sGpuBufferF, uv, 0);
     74 }
     75 
     76 ivec4 fetch_from_gpu_buffer_1i(HIGHP_FS_ADDRESS int address) {
     77     ivec2 uv = get_gpu_buffer_uv(address);
     78     return texelFetch(sGpuBufferI, uv, 0);
     79 }