• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            string

            string
            posts - 27, comments - 177, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            GPGPU編程快速入門(mén)

            Posted on 2020-09-15 00:31 djx_zh 閱讀(10160) 評(píng)論(0)  編輯 收藏 引用

            GPGPU編程快速入門(mén)

            以將圖像反色處理為例。

            確保chrome 支持WebGL2.0 Compute

            在chrome地址欄輸入 chrome://flags/#enable-webgl2-compute-context 點(diǎn)擊"Enabled", 按提示重啟chrome。

            編寫(xiě)kernel

            // 0. 函數(shù)名glsl_invert, 
            //    src 為輸入圖像(HTMLCanvasElement 或 HTMLImageElement),
            //    dst 為輸出圖像
            function glsl_invert(src, dst){
                return `
                    // 1. 取得 threadid 
                    ivec2 pos = ivec2(thread.xy);
                    // 2. 根據(jù) threadid 從輸入圖像讀入像素
                   vec4 pixel = src[pos.y][pos.x]; 
                   // 3. 將像素反色
                   vec4 invert = vec4(1.0 - pixel.x, 1.0 - pixel.y, 1.0 - pixel.z, 1.0);
                   // 4. 將反色像素存入dst
                   dst[pos.y][pos.x] = invert;     
                `;
            }

            然后在javascript中執(zhí)行kernel

            //1. 生成一個(gè)WebCS實(shí)例, canvas將用于顯示圖像 
            let webCS = new WebCS({canvas:$("#canvas2GPU")[0]}); 

            //2. 從glsl_invert函數(shù)生成shader實(shí)例cs_texture2
            let cs_texture2 = webCS.createShader(glsl_invert, { local_size:[8, 8, 1], params:{src:'texture', 'dst':'texture'}});

            //3. 在GPU上執(zhí)行cs_texture2
            let texSrc = $('#image000')[0];
            cs_texture2.setGroups(512/8, 512/8, 1).run(texSrc, null);

            //4. 獲得dst指向的texture對(duì)象 
            let tex = cs_texture2.getTexture('dst');

            //5. 將tex渲染到默認(rèn)canvas
            webCS.present(tex);

            //6. 顯示 canvas
            $("#display1")[0].appendChild(webCS.canvas);


            練習(xí)


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            办公室久久精品| 国产色综合久久无码有码| 久久99国产精品久久99果冻传媒| 中文字幕乱码人妻无码久久| 97久久精品无码一区二区| 精品久久久久久99人妻| 性高湖久久久久久久久| 久久婷婷色综合一区二区| 无码人妻久久一区二区三区| 狠狠久久综合| 国内精品久久久久伊人av| 久久99国产精品成人欧美| 久久久无码精品亚洲日韩京东传媒 | 国产成人久久AV免费| 久久久精品人妻无码专区不卡| 久久人人爽人人人人爽AV| 国产ww久久久久久久久久| 亚洲成色WWW久久网站| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久天天躁狠狠躁夜夜躁2O2O| 99久久精品久久久久久清纯| 久久亚洲AV无码精品色午夜| 亚洲一区二区三区日本久久九| 日韩精品久久无码人妻中文字幕| 久久夜色精品国产亚洲av| 国产一级做a爰片久久毛片| 男女久久久国产一区二区三区| 狠狠色丁香久久婷婷综合蜜芽五月| 999久久久免费国产精品播放| av无码久久久久久不卡网站| 99久久99久久精品国产片果冻| 久久久人妻精品无码一区| 久久精品成人欧美大片| 久久精品国产只有精品2020| 精品久久久久久国产潘金莲| 久久久久国产精品熟女影院| 久久人人爽人人爽人人片av高请 | 欧洲精品久久久av无码电影| 久久久久波多野结衣高潮| 2019久久久高清456| 亚洲午夜久久久久久久久久|