anchor.diff:  """;
   
   
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
   //https://github.com/skurmedel/webglmat/blob/master/src/shaders/metal_fs.glsl
   const FS2 =
       """
  
positive.code:       (m.material as ShaderMaterial).afterBinding = (ShaderMaterial material, Mesh mesh, Matrix4 worldMatrix) {
          graphicsDevice.bindTexture("GgxDFV", ggx);
          graphicsDevice.bindTexture("diffuseSampler", diffuseTexture);
          if(bumpTexture != null) {
            graphicsDevice.bindTexture("bumpSampler", bumpTexture);
          }
          graphicsDevice.bindInt("type", type);
  
negative.code:     controllers.children.add(roughnessSlider);
      controllers.children.add(new html.BRElement());
  
      var refractionSlider = new html.RangeInputElement();
      refractionSlider.id = "refractionSlider";
      refractionSlider.min = "0";
      refractionSlider.max = "3";
      refractionSlider.step = "0.01";
      refractionSlider.value = specualerColor.toString();
      refractionSlider.onChange.listen((e) {
        specualerColor = double.parse(refractionSlider.value);
      });
      controllers.children.add(_labelFor(refractionSlider, "Refraction(0~3)"));
      controllers.children.add(new html.BRElement());
      controllers.children.add(refractionSlider);
      controllers.children.add(new html.BRElement());
  
      var refractionList = new html.SelectElement();
      refractionList.id = "refractionList";
      refractionList.value = specualerColor.toString();
      refractionList.onChange.listen((e) {
        var opt = refractionList.options[refractionList.selectedIndex];
        specualerColor = double.parse(opt.value);
        refractionSlider.value = specualerColor.toString();
      });
  
      [{
          "name": "Quartz",
          "value": 0.045593921
        }, {
          "name": "ice",
          "value": 0.017908907
        }, {
          "name": "Water",
          "value": 0.020373188
        }, {
          "name": "Alcohol",
          "value": 0.01995505
        }, {
          "name": "Glass",
          "value": 0.04
        }, {
          "name": "Milk",
          "value": 0.022181983
        }, {
          "name": "Ruby",
          "value": 0.077271957
        }, {
          "name": "Crystal",
          "value": 0.111111111
        }, {
          "name": "Diamond",
          "value": 0.171968833
        }, {
          "name": "Skin",
          "value": 0.028
        },].forEach((r) {
        var option = new html.OptionElement(data: r["name"], value: r["value"].toString());
        refractionList.children.add(option);
      });
      controllers.children.add(refractionList);
      controllers.children.add(new html.BRElement());
  
      _loadModel(urls.first);
  