惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
F
Fortinet All Blogs
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
Jina AI
Jina AI
J
Java Code Geeks
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
美团技术团队
博客园 - 司徒正美
宝玉的分享
宝玉的分享
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - 3D入魔

make编译时fatal error: codecvt: No such file or directory解决方法 c++ 输入文件流ifstream用法详解[转] Ubuntu下,已经编译了OSG,如何增加OsgFbx插件,支持读取.fbx格式文件[转] vscode一键配置C/C++多个C及CPP文件编译与tasks.json和launch.json原理【转】 ecvt()、strtod()、strtoul() sscanf,sscanf_s及其相关用法[转] OSG3.4.0静态库编译(VS2019) 新手填坑--国产统信UOS操作系统上编译OpenScenGraph(OSG)3.4(附编译成果.so)2023年1月 GPL、BSD、MIT、Mozilla、Apache 和 LGPL 六种开源协议选择 一图解决 nodejs express multer 中文名乱码【转】 Cesium加载离线地图和离线地形【转】 WebXR 技术调研 - 在浏览器中构建扩展现实(XR)应用【转】 Cesium+vue 制作风流场【转】 pkg 打包node服务端 填坑记录!! 实景三维电子沙盘 数字孪生城市 三维数字沙盘+GIS = F3DGIS 实战!使用pano2vr生成html5全景页面【转】 Cesium 使用MediaStreamRecorder 或者MediaRecorder录屏并下载视频,以及开启摄像头录像。【转】
Cesium建筑自定义光源效果[转]
3D入魔 · 2022-08-03 · via 博客园 - 3D入魔
  const customShader = new Cesium.CustomShader({
    lightingModel: Cesium.LightingModel.UNLIT,
    uniforms: {
      u_cameraDirectionWC: {
        type: Cesium.UniformType.VEC3,
        value: WE.viewer.scene.camera.positionWC,
      },
      u_lightColor1: {
        type: Cesium.UniformType.VEC4,
        value: lightPoint1.color,
      },
      u_lightPos1: {
        type: Cesium.UniformType.VEC3,
        value: lightPoint1.postion,
      },
      u_lightColor2: {
        type: Cesium.UniformType.VEC4,
        value: lightPoint2.color,
      },
      u_lightPos2: {
        type: Cesium.UniformType.VEC3,
        value: lightPoint2.postion,
      },
      u_lightColor3: {
        type: Cesium.UniformType.VEC4,
        value: lightPoint3.color,
      },
      u_lightPos3: {
        type: Cesium.UniformType.VEC3,
        value: lightPoint3.postion,
      },
    },
    fragmentShaderText: `
        vec4 makeLight(vec4 lightColorHdr,vec3 lightPos,
          vec3 positionWC,vec3 positionEC,vec3 normalEC,czm_pbrParameters pbrParameters)
        {
          vec3 color = vec3(0.0);
          float mx1 = 1.0;
          vec3 light1Dir = positionWC - lightPos;
          float distance1 = length(light1Dir);
          if(distance1 < 1000.0){
            vec4 l1 = czm_view * vec4(lightPos, 1.0);
            vec3 lightDirectionEC = l1.xyz - positionEC;
            mx1 = 1.0 - distance1 / 1000.0;
            color = czm_pbrLighting(
              positionEC,
              normalEC,
              lightDirectionEC,
              lightColorHdr.xyz,
              pbrParameters
            ).xyz;
          }
          mx1 = max(color.r,max(color.g,color.b)) * pow(mx1,1.0) * 10.0;
          return vec4(color,mx1);
        }
        void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material)
        {
          material.diffuse = vec3(1.0);
          vec3 positionWC = fsInput.attributes.positionWC;
          vec3 normalEC = fsInput.attributes.normalEC;
          vec3 positionEC = fsInput.attributes.positionEC;

          vec3 lightColorHdr = czm_lightColorHdr;
          vec3 lightDirectionEC = czm_lightDirectionEC;
          lightDirectionEC = (czm_view * vec4(u_cameraDirectionWC,1.0)).xyz - positionEC;

          czm_pbrParameters pbrParameters;
          pbrParameters.diffuseColor = material.diffuse;
          pbrParameters.f0 = vec3(0.5);
          pbrParameters.roughness = 1.0;

          vec3 ligth1Color0 = czm_pbrLighting(
            positionEC,
            normalEC,
            lightDirectionEC,
            lightColorHdr,
            pbrParameters
          );

          vec4 ligth1ColorR = makeLight(u_lightColor1,u_lightPos1,positionWC,positionEC,normalEC,pbrParameters);
          vec4 ligth1ColorG = makeLight(u_lightColor2,u_lightPos2,positionWC,positionEC,normalEC,pbrParameters);
          vec4 ligth1ColorB = makeLight(u_lightColor3,u_lightPos3,positionWC,positionEC,normalEC,pbrParameters);

          vec3 finalColor = mix(ligth1Color0.rgb, ligth1ColorR.rgb, ligth1ColorR.a);
          finalColor = mix(finalColor, ligth1ColorG.rgb, ligth1ColorG.a);
          finalColor = mix(finalColor, ligth1ColorB.rgb, ligth1ColorB.a);
          material.diffuse = finalColor;
        }
        `,
  });

原文:https://blog.csdn.net/rpgpp55/article/details/124073343?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-124073343-blog-108745813.pc_relevant_multi_platform_featuressortv2dupreplace&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-124073343-blog-108745813.pc_relevant_multi_platform_featuressortv2dupreplace&utm_relevant_index=5