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

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

?? phongshader.java

?? Sunflow是一個照片級的渲染系統
?? JAVA
字號:
package org.sunflow.core.shader;

import org.sunflow.SunflowAPI;
import org.sunflow.core.ParameterList;
import org.sunflow.core.Ray;
import org.sunflow.core.Shader;
import org.sunflow.core.ShadingState;
import org.sunflow.image.Color;
import org.sunflow.math.OrthoNormalBasis;
import org.sunflow.math.Vector3;

public class PhongShader implements Shader {
    private Color diff;
    private Color spec;
    private float power;
    private int numRays;

    public PhongShader() {
        diff = Color.GRAY;
        spec = Color.GRAY;
        power = 20;
        numRays = 4;
    }

    public boolean update(ParameterList pl, SunflowAPI api) {
        diff = pl.getColor("diffuse", diff);
        spec = pl.getColor("specular", spec);
        power = pl.getFloat("power", power);
        numRays = pl.getInt("samples", numRays);
        return true;
    }

    protected Color getDiffuse(ShadingState state) {
        return diff;
    }

    public Color getRadiance(ShadingState state) {
        // make sure we are on the right side of the material
        state.faceforward();
        // setup lighting
        state.initLightSamples();
        state.initCausticSamples();
        // execute shader
        return state.diffuse(getDiffuse(state)).add(state.specularPhong(spec, power, numRays));
    }

    public void scatterPhoton(ShadingState state, Color power) {
        // make sure we are on the right side of the material
        state.faceforward();
        Color d = getDiffuse(state);
        state.storePhoton(state.getRay().getDirection(), power, d);
        float avgD = d.getAverage();
        float avgS = spec.getAverage();
        double rnd = state.getRandom(0, 0, 1);
        if (rnd < avgD) {
            // photon is scattered diffusely
            power.mul(d).mul(1.0f / avgD);
            OrthoNormalBasis onb = state.getBasis();
            double u = 2 * Math.PI * rnd / avgD;
            double v = state.getRandom(0, 1, 1);
            float s = (float) Math.sqrt(v);
            float s1 = (float) Math.sqrt(1.0f - v);
            Vector3 w = new Vector3((float) Math.cos(u) * s, (float) Math.sin(u) * s, s1);
            w = onb.transform(w, new Vector3());
            state.traceDiffusePhoton(new Ray(state.getPoint(), w), power);
        } else if (rnd < avgD + avgS) {
            // photon is scattered specularly
            float dn = 2.0f * state.getCosND();
            // reflected direction
            Vector3 refDir = new Vector3();
            refDir.x = (dn * state.getNormal().x) + state.getRay().dx;
            refDir.y = (dn * state.getNormal().y) + state.getRay().dy;
            refDir.z = (dn * state.getNormal().z) + state.getRay().dz;
            power.mul(spec).mul(1.0f / avgS);
            OrthoNormalBasis onb = state.getBasis();
            double u = 2 * Math.PI * (rnd - avgD) / avgS;
            double v = state.getRandom(0, 1, 1);
            float s = (float) Math.pow(v, 1 / (this.power + 1));
            float s1 = (float) Math.sqrt(1 - s * s);
            Vector3 w = new Vector3((float) Math.cos(u) * s1, (float) Math.sin(u) * s1, s);
            w = onb.transform(w, new Vector3());
            state.traceReflectionPhoton(new Ray(state.getPoint(), w), power);
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩理论片一区二区| 国产91在线|亚洲| 国内成人精品2018免费看| 波多野洁衣一区| 91精品国产免费久久综合| 亚洲欧洲99久久| 国产精品亚洲专一区二区三区| 色综合天天性综合| 精品国精品自拍自在线| 亚洲欧美激情一区二区| 国产福利不卡视频| 精品国产一二三| 午夜精品福利久久久| 91亚洲永久精品| 亚洲国产激情av| 国产成人免费视频网站 | 一本色道久久综合狠狠躁的推荐| 91精品国产综合久久福利| 亚洲激情综合网| 99麻豆久久久国产精品免费优播| 精品国产一区二区精华| 青娱乐精品视频| 欧美日韩你懂得| 洋洋av久久久久久久一区| av不卡在线播放| 国产精品水嫩水嫩| 国产激情视频一区二区三区欧美| 日韩精品资源二区在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 在线精品亚洲一区二区不卡| 国产精品二三区| 99免费精品在线观看| 国产精品高清亚洲| 91丨九色丨蝌蚪丨老版| 一区二区三区在线看| 在线观看一区二区视频| 亚洲第一二三四区| 欧美日韩国产一区| 日日噜噜夜夜狠狠视频欧美人| 欧美色中文字幕| 日韩精品国产欧美| 26uuu国产一区二区三区| 国内欧美视频一区二区| 国产拍揄自揄精品视频麻豆| 成人avav影音| 亚洲在线中文字幕| 日韩一级大片在线| 国产一区不卡视频| 亚洲色图都市小说| 欧美日韩成人综合天天影院| 蜜臀av性久久久久蜜臀av麻豆| 精品国产制服丝袜高跟| 国产成人免费视频精品含羞草妖精 | 久久久久久亚洲综合影院红桃| 韩国成人福利片在线播放| 欧美激情在线观看视频免费| 97se亚洲国产综合自在线不卡 | 在线观看视频一区二区 | 亚洲精品欧美在线| 4438x成人网最大色成网站| 久久99久久99精品免视看婷婷 | 亚洲人一二三区| 欧美日韩黄色影视| 国产在线视频精品一区| 亚洲免费av在线| 6080亚洲精品一区二区| 国产不卡免费视频| 夜夜爽夜夜爽精品视频| 精品国产欧美一区二区| 99久久国产综合色|国产精品| 午夜视频一区二区| 久久九九99视频| 欧美日韩大陆在线| 高清不卡在线观看| 首页欧美精品中文字幕| 欧美国产日韩精品免费观看| 欧美人妖巨大在线| eeuss国产一区二区三区| 日韩一区精品字幕| 中文字幕五月欧美| 日韩精品在线一区| 欧美图片一区二区三区| 国产麻豆精品在线| 视频一区二区三区中文字幕| 国产精品天美传媒沈樵| 欧美一区二区视频免费观看| av在线一区二区| 狠狠色2019综合网| 亚洲va欧美va国产va天堂影院| 国产日韩亚洲欧美综合| 欧美一级夜夜爽| 欧美日韩黄色影视| 日本乱人伦一区| 成人免费看黄yyy456| 免费精品99久久国产综合精品| 亚洲精选在线视频| 中文字幕一区二区三区四区| 精品国偷自产国产一区| 欧美日韩中文精品| 在线免费观看日韩欧美| av电影天堂一区二区在线| 国产一区二区美女诱惑| 麻豆精品精品国产自在97香蕉| 亚洲精品高清在线| 亚洲激情男女视频| 亚洲色图视频网| 国产日产欧产精品推荐色| 日韩精品一区国产麻豆| 日韩一区国产二区欧美三区| 精品视频999| 欧美日韩高清一区二区| 欧美在线综合视频| 欧美日韩精品是欧美日韩精品| 91久久精品一区二区二区| 91小视频免费观看| 色综合久久88色综合天天免费| 国产成人在线影院| 成人国产亚洲欧美成人综合网| 国产乱码精品1区2区3区| 国产丶欧美丶日本不卡视频| 国产激情视频一区二区三区欧美| 国内成人免费视频| 成人中文字幕在线| 成人国产亚洲欧美成人综合网| jiyouzz国产精品久久| 99riav一区二区三区| 91蝌蚪porny成人天涯| 色婷婷一区二区| 欧美日韩免费一区二区三区视频| 欧美日韩国产欧美日美国产精品| 欧美日韩在线精品一区二区三区激情| 欧美日韩不卡视频| wwwwxxxxx欧美| 国产精品狼人久久影院观看方式| 国产精品毛片久久久久久久| 亚洲欧美偷拍另类a∨色屁股| 亚洲福利视频三区| 六月丁香婷婷色狠狠久久| 精品一区二区在线视频| 国产99久久久国产精品潘金网站| 国产69精品久久久久777| 色综合久久88色综合天天6| 欧美精品一级二级| 欧美本精品男人aⅴ天堂| 久久精品视频在线看| 国产精品成人在线观看| 日韩不卡一区二区| 岛国精品在线播放| 在线日韩av片| 久久久精品欧美丰满| 亚洲日本在线天堂| 秋霞电影一区二区| www.欧美.com| 9191精品国产综合久久久久久| 久久久亚洲精品一区二区三区| 136国产福利精品导航| 日本在线播放一区二区三区| 成人黄页在线观看| 欧美成人精品高清在线播放| 中文字幕一区在线观看| 蓝色福利精品导航| 91国内精品野花午夜精品| 精品粉嫩超白一线天av| 亚洲乱码中文字幕| 国产麻豆日韩欧美久久| 欧美美女视频在线观看| 国产精品免费免费| 另类综合日韩欧美亚洲| 在线免费观看成人短视频| 日本一区免费视频| 日韩电影在线看| 色综合咪咪久久| 中文字幕第一区| 国产一区二区三区四| 91精品婷婷国产综合久久性色| 中文字幕亚洲精品在线观看| 国产真实乱偷精品视频免| 欧美麻豆精品久久久久久| 一区二区三区日韩精品| 大陆成人av片| 精品国产一区二区在线观看| 五月开心婷婷久久| 在线中文字幕一区| 国产精品久久午夜夜伦鲁鲁| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 日韩在线观看一区二区| 不卡av在线网| 日本一区二区三区免费乱视频| 精品一区二区三区在线视频| 欧美日韩国产高清一区二区| 亚洲美腿欧美偷拍| 一本大道av伊人久久综合| 国产精品另类一区| 成人免费黄色大片| 国产蜜臀97一区二区三区| 国产成人免费高清| 亚洲国产精品v| 风流少妇一区二区| 欧美国产日本视频| 99热在这里有精品免费|