private ILightAsset TransformLight(PunctualLight o, string id, ReaderContext context) { return(new LightAsset(id)); }
private SamplerParameters?TransfromSamplerParameters(MaterialChannel materialChannel, ReaderContext context) { var materialChannelTexture = materialChannel.Texture; if (materialChannelTexture == null) { return(null); } var primaryImage = materialChannelTexture.PrimaryImage; if (primaryImage == null) { return(null); } return(new SamplerParameters { Image = context.Images[primaryImage.LogicalIndex], TextureCoordinate = materialChannel.TextureCoordinate, TextureTransform = TransformTextureTransform(materialChannel.TextureTransform) }); }
private ICameraAsset TransformCamera(Camera o, string id, ReaderContext context) { return(new CameraAsset(id)); }
private IEnumerable <IShaderParameter> TransformShaderParameter(MaterialChannel materialChannel, ReaderContext context) { var parameter = materialChannel.Parameter; switch (materialChannel.Key) { case "BaseColor": { var samplerParameters = TransfromSamplerParameters(materialChannel, context); if (samplerParameters.HasValue) { yield return(new ShaderParameter <SamplerParameters>(ShaderParameterKey.BaseColorTexture, samplerParameters.Value)); } } yield return(new ShaderParameter <Vector4>(ShaderParameterKey.BaseColorFactor, parameter)); yield break; case "Diffuse": { var samplerParameters = TransfromSamplerParameters(materialChannel, context); if (samplerParameters.HasValue) { yield return(new ShaderParameter <SamplerParameters>(ShaderParameterKey.DiffuseTexture, samplerParameters.Value)); } } yield return(new ShaderParameter <Vector4>(ShaderParameterKey.DiffuseFactor, parameter)); yield break; case "MetallicRoughness": { var samplerParameters = TransfromSamplerParameters(materialChannel, context); if (samplerParameters.HasValue) { yield return(new ShaderParameter <SamplerParameters>(ShaderParameterKey.MetallicRoughnessTexture, samplerParameters.Value)); } } yield return(new ShaderParameter <float>(ShaderParameterKey.MetallicFactor, parameter.X)); yield return(new ShaderParameter <float>(ShaderParameterKey.RoughnessFactor, parameter.Y)); yield break; case "SpecularGlossiness": { var samplerParameters = TransfromSamplerParameters(materialChannel, context); if (samplerParameters.HasValue) { yield return(new ShaderParameter <SamplerParameters>(ShaderParameterKey.SpecularGlossinessTexture, samplerParameters.Value)); } } yield return(new ShaderParameter <Vector3>(ShaderParameterKey.SpecularFactor, new Vector3(parameter.X, parameter.Y, parameter.Z))); yield return(new ShaderParameter <float>(ShaderParameterKey.GlossinessFactor, parameter.W)); yield break; case "Normal": { var samplerParameters = TransfromSamplerParameters(materialChannel, context); if (samplerParameters.HasValue) { yield return(new ShaderParameter <SamplerParameters>(ShaderParameterKey.NormalTexture, samplerParameters.Value)); } } yield return(new ShaderParameter <float>(ShaderParameterKey.NormalTextureScale, parameter.X)); yield break; case "Occlusion": { var samplerParameters = TransfromSamplerParameters(materialChannel, context); if (samplerParameters.HasValue) { yield return(new ShaderParameter <SamplerParameters>(ShaderParameterKey.OcclusionTexture, samplerParameters.Value)); } } yield return(new ShaderParameter <float>(ShaderParameterKey.OcclusionTextureStrength, parameter.X)); yield break; case "Emissive": { var samplerParameters = TransfromSamplerParameters(materialChannel, context); if (samplerParameters.HasValue) { yield return(new ShaderParameter <SamplerParameters>(ShaderParameterKey.EmissiveTexture, samplerParameters.Value)); } } { yield return(new ShaderParameter <Vector3>(ShaderParameterKey.EmissiveFactor, new Vector3(parameter.X, parameter.Y, parameter.Z))); } yield break; default: throw new NotImplementedException($"Material channel {materialChannel.Key} is not supported yet"); } }