亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jeweledshader.cpp

?? shrike is a utility application that acts as a testbed for shaders written in Sh
?? CPP
字號:
// Sh: A GPU metaprogramming language.//// Copyright 2003-2005 Serious Hack Inc.// // This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA  02110-1301, USA//////////////////////////////////////////////////////////////////////////////// multiple homomorphic materials blended with a material map#include <sh/sh.hpp>#include <sh/shutil.hpp>#include <iostream>#include "Shader.hpp"#include "Globals.hpp"using namespace SH;using namespace ShUtil;#include "util.hpp"class JeweledShader : public Shader {public:  JeweledShader();  ~JeweledShader();  bool init();  ShProgram vertex() { return vsh;}  ShProgram fragment() { return fsh;}  ShProgram vsh, fsh;  static JeweledShader instance;};JeweledShader::JeweledShader()  : Shader("Homomorphic Factorization: Material Mapping"){}JeweledShader::~JeweledShader(){}bool JeweledShader::init(){  ShAttrib2f texture_scale(1.0,1.0);  texture_scale.name("Texture Scale");  texture_scale.range(0.0,10.0);  ShAttrib1f theta(1.5);  theta.name("Index of Refraction");  theta.range(0.0,3.0);  ShAttrib2f threshold(0.45,0.55);  threshold.name("Texture thresholds");  threshold.range(0.0,1.0);  ShAttrib1f width(0.01);  width.name("Texture transition width");  width.range(0.0,0.2);  vsh = SH_BEGIN_PROGRAM("gpu:vertex") {    ShInputPosition4f ipos;// model-space position    ShInputNormal3f inorm; // model-space normal    ShInputTexCoord2f tc;  // texture coordinate (passed through)    ShInputVector3f itan;  // model-space tangent        ShOutputPosition4f opos; // Position in NDC    ShOutputVector3f light;  // direction to light (surface frame)    ShOutputVector3f view;   // direction to eye (surface frame)    ShOutputTexCoord2f otc;  // tex coords passed through    ShOutputVector3f reflv;  // reflection vector    ShOutputAttrib1f fres;   // fresnel term    otc = tc * texture_scale;    opos = Globals::mvp | ipos; // Compute NDC position    ShNormal3f n = Globals::mv | inorm; // Compute view-space normal    ShNormal3f t = Globals::mv | itan; // Compute view-space normal    n = normalize(n);    t = normalize(t);    ShPoint3f posv = (Globals::mv | ipos)(0,1,2); // Compute view-space position    ShVector3f lightv = normalize(Globals::lightPos - posv); // Compute light direction    ShVector3f viewv = -normalize(posv); // Compute view vector    reflv = reflect(viewv,n);  // view-space reflection vector    reflv = Globals::mv_inverse | reflv;  // do env map lookup in model space    fres = fresnel(viewv,n,theta);    // compute local surface frame (in view space)    // ShVector3f t = normalize(itan - (itan|n)*n);    ShVector3f s = normalize(cross(t,n));        // project view and light vectors onto local surface frame    view(0) = (t|viewv);    view(1) = (s|viewv);    view(2) = (n|viewv);    light(0) = (t|lightv);    light(1) = (s|lightv);    light(2) = (n|lightv);  // if positive, is irradiance scale  } SH_END;  ShImage image;#define NMATS 3#define LMAT 0#define UMAT 2  ShTable2D<ShColor3fub> ptex[NMATS];  ShTable2D<ShColor3fub> qtex[NMATS];  load_PNG(image, normalize_path(SHMEDIA_DIR "/brdfs/mystique/mystique64_0.png"));  ptex[0].size(image.width(), image.height());  ptex[0].memory(image.memory());  ptex[0].name("Mystique p texture");  load_PNG(image, normalize_path(SHMEDIA_DIR "/brdfs/mystique/mystique64_1.png"));  qtex[0].size(image.width(), image.height());  qtex[0].memory(image.memory());  qtex[0].name("Mystique q texture");  load_PNG(image, normalize_path(SHMEDIA_DIR "/brdfs/satin/satinp.png"));  ptex[1].size(image.width(), image.height());  ptex[1].memory(image.memory());  ptex[1].name("Satin p texture");  load_PNG(image, normalize_path(SHMEDIA_DIR "/brdfs/satin/satinq.png"));  qtex[1].size(image.width(), image.height());  qtex[1].memory(image.memory());  qtex[1].name("Satin q texture");  load_PNG(image, normalize_path(SHMEDIA_DIR "/brdfs/garnetred/garnetred64_0.png"));  ptex[2].size(image.width(), image.height());  ptex[2].memory(image.memory());  ptex[2].name("Garnet red p texture");  load_PNG(image, normalize_path(SHMEDIA_DIR "/brdfs/garnetred/garnetred64_1.png"));  qtex[2].size(image.width(), image.height());  qtex[2].memory(image.memory());  qtex[2].name("Garnet red q texture");  // Specular highlight (to be added when needed...)  load_PNG(image, normalize_path(SHMEDIA_DIR "/brdfs/specular.png"));  ShTable2D<ShColor3fub> stex(image.width(), image.height());  stex.memory(image.memory());  stex.name("Specular highlight texture");    // Cube map for mirror reflection  std::string imageNames[6] = {"left", "right", "top", "bottom", "back", "front"};  ShTableCube<ShColor4fub> env;  env.name("Environment map");  {    for (int i = 0; i < 6; i++) {      ShImage image;      load_PNG(image, normalize_path(std::string(SHMEDIA_DIR "/envmaps/aniroom/") + imageNames[i] + ".png"));      env.size(image.width(), image.height());      env.memory(image.memory(), static_cast<ShCubeDirection>(i));    }  }    ShWrapRepeat< ShTable2D<ShColor3fub> > mat;  // Material map (threshold based...)  load_PNG(image, normalize_path(SHMEDIA_DIR "/textures/halftone.png"));  mat.size(image.width(), image.height());  mat.memory(image.memory());  mat.name("Filgiree distance map");    // Scale factors  ShColor3f alpha[NMATS];  ShAttrib1f diffuse[NMATS];  ShAttrib1f specular[NMATS];  ShAttrib1f mirror[NMATS];  // for mystique  alpha[0] = ShColor3f(0.0011786,0.165452,0.0338959);  alpha[0].name("Mystique correction color");  diffuse[0] = ShAttrib1f(10.0);  diffuse[0].range(0.0,20.0);  diffuse[0].name("Mystique diffuse scale");  specular[0] = ShAttrib1f(0.3);  specular[0].range(0.0,1.0);  specular[0].name("Mystique specular scale");  mirror[0] = ShAttrib1f(0.07);  mirror[0].range(0.0,1.0);  mirror[0].name("Mystique mirror scale");  // for satin  alpha[1] = ShColor3f(0.762367,0.762367,0.762367);  alpha[1].name("Satin correction color");  diffuse[1] = ShAttrib1f(1.0);  diffuse[1].range(0.0,5.0);  diffuse[1].name("Satin diffuse scale");  specular[1] = ShAttrib1f(0.0);  specular[1].range(0.0,1.0);  specular[1].name("Satin specular scale");  mirror[1] = ShAttrib1f(0.05);  mirror[1].range(0.0,1.0);  mirror[1].name("Satin mirror scale");  // for garnet red  alpha[2] = ShColor3f(0.0410592,0.0992037,0.0787714);  alpha[2].name("Garnet red correction color");  diffuse[2] = ShAttrib1f(5.0);  diffuse[2].range(0.0,20.0);  diffuse[2].name("Garnet red diffuse scale");  specular[2] = ShAttrib1f(0.4);  specular[2].range(0.0,1.0);  specular[2].name("Garnet red specular scale");  mirror[2] = ShAttrib1f(0.09);  mirror[2].range(0.0,1.0);  mirror[2].name("Garnet red mirror scale");  // Light parameters  ShColor3f light_color = ShColor3f(1.0,1.0,1.0);  light_color.range(0.0,1.0);  light_color.name("Light color");  ShAttrib1f light_power = ShAttrib1f(5.0);  light_power.range(0.0,20.0);  light_power.name("Light power");    fsh = SH_BEGIN_PROGRAM("gpu:fragment") {    ShInputPosition4f posh;    ShInputVector3f light;    ShInputVector3f view;    ShInputTexCoord2f u;    ShInputVector3f reflv;      ShInputAttrib1f fres;      ShOutputColor3f result;    // Normalize (theoretically not needed if compiler smart enough)    light = normalize(light);    view = normalize(view);    // compute half vector    ShVector3f half = normalize(view + light);     // Theoretically not needed if use common subexpression elimination...    ShTexCoord2f hu = parabolic_norm(half);    ShTexCoord2f lu = parabolic_norm(light);    ShTexCoord2f vu = parabolic_norm(view);    // Look up shared specular highlight component     ShColor3f spec = fres * stex(hu);    // Look up shared mirror reflection component     ShColor3f mirr = fres * env(reflv)(0,1,2);    // BUG: doesn't work (satin always white) if this not here...    // in theory, should not be needed, bug in compiler?    result = ShColor3f(0.0,0.0,0.0);        // threshold the filgiree distance texture    ShAttrib1f m = mat(u)(0);    ShAttrib3f mask;    mask(1) = linstep(m,threshold(0),width);    mask(2) = linstep(m,threshold(1),width);    mask(0) = ShAttrib1f(1.0) - mask(1);    mask(1) = mask(1) - mask(2);    // sum contributions of all materials    for (int i=LMAT; i<=UMAT; i++) {       ShColor3f f;       // Incorporate diffuse scale, correction factor, and irradiance       f = diffuse[i] * alpha[i] * pos(light(2));       // do texture lookups       f *= ptex[i](lu);       f *= qtex[i](hu);       f *= ptex[i](vu);       // Add in specular highlight term (should use Fresnel here)       f += specular[i] * spec * pos(light(2));       // Add in mirror term (should use Fresnel here)        f += mirror[i] * mirr;       //f = ShColor3f(i == 0 ? 1.0 : 0.0, i == 1 ? 1.0 : 0.0, i == 2 ? 1.0 : 0.0);       // mask by material map and fresnel term       f *= (1.0f - fres);       f *= mask(i);       // accumulate       result += f;    }    // Take into account light power and colour    result *= light_power * light_color;  } SH_END;  return true;}JeweledShader JeweledShader::instance = JeweledShader();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女久久久久av爽李琼 | 91精彩视频在线| 欧美日韩免费观看一区二区三区 | 中文字幕av一区二区三区高| 亚洲成a人片在线不卡一二三区 | 日韩高清在线观看| 91影院在线免费观看| 欧美电影免费观看高清完整版在线 | 国产精品一区三区| 欧美日韩午夜在线视频| 国产精品毛片久久久久久| 蜜桃91丨九色丨蝌蚪91桃色| 欧美视频在线观看一区二区| 国产欧美一区二区精品久导航| 首页欧美精品中文字幕| 一本大道久久a久久综合| 中文字幕不卡在线播放| 国产一区中文字幕| 欧美成人性战久久| 日本欧美韩国一区三区| 欧美日韩一卡二卡三卡| 亚洲一区自拍偷拍| 色婷婷国产精品久久包臀 | 日韩精品色哟哟| 在线观看日韩av先锋影音电影院| 国产精品久久久久影院| 国产精品一区二区在线播放 | 正在播放亚洲一区| 午夜欧美大尺度福利影院在线看| 色一区在线观看| 一区二区三区四区不卡在线 | 久久国产精品72免费观看| 欧美猛男男办公室激情| 日韩成人免费在线| 日韩你懂的电影在线观看| 日本不卡一二三区黄网| 日韩一区二区三区在线| 免费观看在线综合| 久久亚洲精品小早川怜子| 国产乱理伦片在线观看夜一区| 久久婷婷久久一区二区三区| 国产美女视频91| 国产精品视频观看| 色拍拍在线精品视频8848| 亚洲一二三四久久| 91麻豆精品国产自产在线观看一区| 五月婷婷激情综合| 日韩精品一区在线| 国产黄色精品网站| 中文字幕在线不卡视频| 欧美日韩国产三级| 乱中年女人伦av一区二区| 久久久久久久久蜜桃| 菠萝蜜视频在线观看一区| 亚洲视频在线观看一区| 欧美三级在线看| 国产一区二区三区| 亚洲欧美电影一区二区| 欧美一区二区三区成人| 丰满白嫩尤物一区二区| 一区二区不卡在线视频 午夜欧美不卡在| 在线观看日韩电影| 九九视频精品免费| 亚洲精选视频在线| 精品美女在线播放| hitomi一区二区三区精品| 亚洲一线二线三线久久久| 久久亚洲影视婷婷| 欧美天堂亚洲电影院在线播放| 麻豆精品一区二区| 亚洲黄色在线视频| 久久精品视频在线看| 在线看一区二区| 国产高清成人在线| 日韩高清欧美激情| 国产精品久久久久7777按摩| 精品美女被调教视频大全网站| 成人免费看的视频| 美国欧美日韩国产在线播放| 18成人在线观看| www成人在线观看| 欧美日韩激情一区| av在线这里只有精品| 精品一区二区三区视频在线观看 | 国产午夜亚洲精品羞羞网站| 欧美四级电影在线观看| 成人av影院在线| 国产在线精品免费| 日韩av二区在线播放| 一区二区三区四区在线免费观看| 久久精品视频免费观看| 日韩视频免费直播| 欧美伊人精品成人久久综合97| 岛国av在线一区| 韩国女主播一区| 久久9热精品视频| 日韩在线卡一卡二| 亚洲国产精品麻豆| 尤物在线观看一区| 欧美日本一区二区| 亚洲欧美色综合| 国产精品国产三级国产普通话99 | 综合色天天鬼久久鬼色| 国产日韩欧美电影| 欧美精品一区二区久久婷婷| 欧美日韩在线三级| 欧洲精品视频在线观看| 欧美亚洲图片小说| 欧美日韩一区二区在线视频| 91精彩视频在线| 欧美视频三区在线播放| 欧美性生活一区| 欧美色偷偷大香| 欧美少妇一区二区| 9191国产精品| 欧美一级电影网站| 欧美大尺度电影在线| 日韩欧美亚洲国产另类| 日韩视频免费观看高清完整版 | 一区二区三区美女| 亚洲精选视频免费看| 亚洲综合激情网| 亚洲午夜久久久久久久久电影院 | 成人免费毛片高清视频| 高清成人免费视频| 99re视频精品| 欧日韩精品视频| 欧美日韩一区二区三区高清 | 亚洲天堂精品视频| 一区二区三区电影在线播| 亚洲国产一区二区视频| 日本欧美韩国一区三区| 国产中文字幕精品| av亚洲精华国产精华精华| 欧美中文字幕久久| 精品久久人人做人人爽| 国产精品入口麻豆原神| 亚洲私人影院在线观看| 亚洲成人激情av| 国内成人免费视频| 91视频观看免费| 51精品国自产在线| 久久久久久久久久久久久女国产乱| 国产精品―色哟哟| 天天色天天操综合| 风间由美一区二区三区在线观看| 欧美私人免费视频| 欧美成人a视频| 亚洲欧美一区二区三区极速播放| 亚洲午夜av在线| 国产美女精品在线| 91精品办公室少妇高潮对白| 欧美变态tickling挠脚心| 国产精品污污网站在线观看| 亚洲高清久久久| 国产精品亚洲专一区二区三区| 色香蕉久久蜜桃| 精品粉嫩超白一线天av| 亚洲美女淫视频| 国产呦精品一区二区三区网站| 色噜噜狠狠色综合欧洲selulu| 久久综合网色—综合色88| 夜夜嗨av一区二区三区中文字幕| 国产一区二区在线视频| 欧美唯美清纯偷拍| 国产精品国产自产拍高清av王其| 日本午夜一区二区| 色综合激情五月| 欧美国产成人精品| 韩日av一区二区| 欧美日韩亚洲综合一区 | 日欧美一区二区| av亚洲精华国产精华精华| 久久综合九色综合久久久精品综合 | 欧美视频在线一区二区三区 | 在线欧美日韩国产| 国产精品久久久久久久久久免费看 | 激情小说欧美图片| 欧美三级欧美一级| 亚洲欧美日韩精品久久久久| 成人深夜视频在线观看| 26uuu国产日韩综合| 秋霞电影网一区二区| 欧美日韩激情一区二区| 亚洲精品久久7777| 91论坛在线播放| 中文字幕在线不卡一区| 成人毛片老司机大片| 国产视频一区二区在线观看| 极品少妇xxxx精品少妇偷拍| 欧美一级淫片007| 婷婷国产在线综合| 欧美日韩一区二区三区视频| 亚洲国产日韩一级| 欧美另类变人与禽xxxxx| 亚洲国产sm捆绑调教视频| 欧美日韩美少妇| 日韩福利视频网| 91精品国产91热久久久做人人| 水野朝阳av一区二区三区|