Cesium--一些实验过程中的效果记录

1.一种反射效果:

 

片元着色器代码

fragmentShaderSource:`
					in vec3 v_positionMC;
					in vec3 v_positionEC;
					in vec2 v_st;
					void main(){
						czm_materialInput materialInput;
						vec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)));
						vec3 positionToEyeEC = -v_positionEC;
						czm_material material = czm_getMaterial(materialInput);
						
						float flowMapOffset0 = 20.0;
						float flowMapOffset1 = 20.0;
						float halfCycle = 0.15 * 0.5;
						float scale = 1.0;
						float reflectivity = 0.02;
						
						vec3 toEye = normalize( positionToEyeEC );
			
						vec2 flow = czm_lightDirectionEC.xy;
						flow.x *= - 1.0;
			
						// sample normal maps (distort uvs with flowdata)
						vec4 normalColor0 = vec4(normalEC,1.0);
						vec4 normalColor1 = vec4(normalEC,1.0);
			
						// linear interpolate to get the final normal color
						float flowLerp = abs( halfCycle - flowMapOffset0 ) / halfCycle;
						vec4 normalColor = mix( normalColor0, normalColor1, flowLerp );
			
						// calculate normal vector
						vec3 normal = normalize( vec3( normalColor.r * 2.0 - 1.0, normalColor.b,  normalColor.g * 2.0 - 1.0 ) );
			
						// calculate the fresnel term to blend reflection and refraction maps
						float theta = max( dot( toEye, normal ), 0.0 );
						float reflectance = reflectivity + ( 1.0 - reflectivity ) * pow( ( 1.0 - theta ), 5.0 );
			
						// calculate final uv coords
						vec3 coord = materialInput.str;
						vec2 uv = v_st;
						out_FragColor = vec4( vec3(51.0/255.0,204.0/255.0,204.0/255.0), 1.0 ) * reflectance ;
						
					}
				`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值