// Copyright 2025 DeepMind Technologies Limited // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. material { name : phong_cube_reflect, shadingModel : specularGlossiness, flipUV : false, parameters : [ { type : float4, name : BaseColorFactor }, { type : float, name : SpecularFactor }, { type : float, name : GlossinessFactor }, { type : float, name : EmissiveFactor }, { type : float3, name : UvScale }, { type : float, name : Reflectance }, { type : samplerCubemap, name : BaseColor }, { type : sampler2d, name : Reflection } ], variables : [ vertex_pos ] } vertex { void materialVertex(inout MaterialVertexInputs material) { material.vertex_pos = getPosition(); } } fragment { void material(inout MaterialInputs material) { vec3 uv = variable_vertex_pos.xyz * materialParams.UvScale; vec2 screen_uv = gl_FragCoord.xy * getResolution().zw; prepareMaterial(material); material.baseColor = materialParams.BaseColorFactor; material.baseColor *= texture(materialParams_BaseColor, uv); material.specularColor = vec3(materialParams.SpecularFactor); material.glossiness = materialParams.GlossinessFactor; material.emissive = vec4( materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0); // Apply reflection. vec4 reflection = texture(materialParams_Reflection, screen_uv); material.baseColor.rgb = mix(material.baseColor.rgb, reflection.rgb, materialParams.Reflectance); } }