public ImageEffectShader GetShader(RenderDrawContext context, VoxelAttribute attr) { VoxelViewContext viewContext = new VoxelViewContext(voxelView: false); Matrix ViewProjection = context.RenderContext.RenderView.ViewProjection; voxelDebugEffectShader.Parameters.Set(VoxelVisualizationViewShaderKeys.view, ViewProjection); voxelDebugEffectShader.Parameters.Set(VoxelVisualizationViewShaderKeys.viewInv, Matrix.Invert(ViewProjection)); voxelDebugEffectShader.Parameters.Set(VoxelVisualizationViewShaderKeys.background, (Vector4)Background); attr.UpdateSamplingLayout("AttributeSamplers[0]"); attr.ApplySamplingParameters(viewContext, voxelDebugEffectShader.Parameters); MarchMethod.UpdateMarchingLayout("marcher"); MarchMethod.ApplyMarchingParameters(voxelDebugEffectShader.Parameters); voxelDebugEffectShader.Parameters.Set(VoxelVisualizationViewShaderKeys.marcher, MarchMethod.GetMarchingShader(0)); ShaderSourceCollection collection = new ShaderSourceCollection { attr.GetSamplingShader() }; voxelDebugEffectShader.Parameters.Set(MarchAttributesKeys.AttributeSamplers, collection); return(voxelDebugEffectShader); }
public override void ApplyEffectPermutations(RenderEffect renderEffect) { if (traceAttribute != null) { ShaderSourceCollection collection = new ShaderSourceCollection { traceAttribute.GetSamplingShader() }; renderEffect.EffectValidator.ValidateParameter(attributeSamplersKey, collection); if (((LightVoxel)Light.Type).DiffuseMarcher != null) { renderEffect.EffectValidator.ValidateParameter(diffuseMarcherKey, ((LightVoxel)Light.Type).DiffuseMarcher.GetMarchingShader(0)); } if (((LightVoxel)Light.Type).SpecularMarcher != null) { renderEffect.EffectValidator.ValidateParameter(specularMarcherKey, ((LightVoxel)Light.Type).SpecularMarcher.GetMarchingShader(0)); } } }
public ImageEffectShader GetShader(RenderDrawContext context, VoxelAttribute attr) { VoxelViewContext viewContext = new VoxelViewContext(false); attr.UpdateSamplingLayout("Attribute"); attr.ApplySamplingParameters(viewContext, voxelDebugEffectShader.Parameters); voxelDebugEffectShader.Parameters.Set(VoxelVisualizationRawShaderKeys.Attribute, attr.GetSamplingShader()); voxelDebugEffectShader.Parameters.Set(VoxelVisualizationRawShaderKeys.mip, Mipmap); voxelDebugEffectShader.Parameters.Set(VoxelVisualizationRawShaderKeys.rangeOffset, RangeOffset); voxelDebugEffectShader.Parameters.Set(VoxelVisualizationRawShaderKeys.range, Range); return(voxelDebugEffectShader); }