internal static void AddMaterialShaderFlagMacros(StringBuilder sb, MyShaderUnifiedFlags flags) { if ((flags & MyShaderUnifiedFlags.DEPTH_ONLY) > 0) { sb.AppendLine("#define DEPTH_ONLY"); } if ((flags & MyShaderUnifiedFlags.ALPHAMASK) > 0) { sb.AppendLine("#define ALPHA_MASKED"); } if ((flags & MyShaderUnifiedFlags.ALPHAMASK_ARRAY) > 0) { sb.AppendLine("#define ALPHA_MASK_ARRAY"); } if ((flags & MyShaderUnifiedFlags.TRANSPARENT) > 0) { sb.AppendLine("#define TRANSPARENT"); } if ((flags & MyShaderUnifiedFlags.DITHERED) > 0) { sb.AppendLine("#define DITHERED"); } if ((flags & MyShaderUnifiedFlags.FOLIAGE) > 0) { sb.AppendLine("#define FOLIAGE"); } if ((flags & MyShaderUnifiedFlags.USE_SKINNING) > 0) { sb.AppendLine("#define USE_SKINNING"); } if ((flags & MyShaderUnifiedFlags.USE_CUBE_INSTANCING) > 0) { sb.AppendLine("#define USE_CUBE_INSTANCING"); } if ((flags & MyShaderUnifiedFlags.USE_DEFORMED_CUBE_INSTANCING) > 0) { sb.AppendLine("#define USE_DEFORMED_CUBE_INSTANCING"); } if ((flags & MyShaderUnifiedFlags.USE_GENERIC_INSTANCING) > 0) { sb.AppendLine("#define USE_GENERIC_INSTANCING"); } if ((flags & MyShaderUnifiedFlags.USE_MERGE_INSTANCING) > 0) { sb.AppendLine("#define USE_MERGE_INSTANCING"); } if ((flags & MyShaderUnifiedFlags.USE_VOXEL_MORPHING) > 0) { sb.AppendLine("#define USE_VOXEL_MORPHING"); } if ((flags & MyShaderUnifiedFlags.USE_SHADOW_CASCADES) == MyShaderUnifiedFlags.USE_SHADOW_CASCADES) { sb.AppendLine(MyRender11.ShaderCascadesNumberHeader()); } }
internal static new void Init() { m_gather = MyShaders.CreateCs("shadows.hlsl", "write_shadow", MyShaderHelpers.FormatMacros("NUMTHREADS " + m_numthreads) + MyRender11.ShaderCascadesNumberHeader()); m_blur_h = MyShaders.CreateCs("shadows.hlsl", "blur", MyShaderHelpers.FormatMacros("NUMTHREADS " + m_numthreads, MyRender11.ShaderCascadesNumberDefine())); m_blur_v = MyShaders.CreateCs("shadows.hlsl", "blur", MyShaderHelpers.FormatMacros("NUMTHREADS " + m_numthreads, "VERTICAL", MyRender11.ShaderCascadesNumberDefine())); }
internal unsafe static void Init() { m_vs = MyShaders.CreateVs("billboard.hlsl", "vs"); m_ps = MyShaders.CreatePs("billboard.hlsl", "ps"); m_vsLit = MyShaders.CreateVs("billboard.hlsl", "vs", MyShaderHelpers.FormatMacros("LIT_PARTICLE") + MyRender11.ShaderCascadesNumberHeader()); m_psLit = MyShaders.CreatePs("billboard.hlsl", "ps", MyShaderHelpers.FormatMacros("LIT_PARTICLE") + MyRender11.ShaderCascadesNumberHeader()); m_inputLayout = MyShaders.CreateIL(m_vs.BytecodeId, MyVertexLayouts.GetLayout(MyVertexInputComponentType.POSITION3, MyVertexInputComponentType.TEXCOORD0_H)); //MyCallbacks.RegisterDeviceResetListener(new OnDeviceResetDelegate(OnDeviceRestart)); InitBillboardsIndexBuffer(MaxBillboards); m_VB = MyHwBuffers.CreateVertexBuffer(MaxBillboards * 4, sizeof(MyVertexFormatPositionTextureH), BindFlags.VertexBuffer, ResourceUsage.Dynamic); var stride = sizeof(MyBillboardData); m_SB = MyHwBuffers.CreateStructuredBuffer(MaxBillboards, stride, true); MyTextureAtlas.ParseAtlasDescription("Textures\\Particles\\", "Textures\\Particles\\ParticlesAtlas.tai", m_atlasedTextures); }
internal static void Init() { //MyRender11.RegisterSettingsChangedListener(new OnSettingsChangedDelegate(RecreateShadersForSettings)); m_baseColorShader = MyShaders.CreatePs("debug.hlsl", "base_color"); m_baseColorLinearShader = MyShaders.CreatePs("debug.hlsl", "base_color_linear"); m_normalShader = MyShaders.CreatePs("debug.hlsl", "normal"); m_glossinessShader = MyShaders.CreatePs("debug.hlsl", "glossiness"); m_metalnessShader = MyShaders.CreatePs("debug.hlsl", "metalness"); m_matIDShader = MyShaders.CreatePs("debug.hlsl", "mat_id"); m_aoShader = MyShaders.CreatePs("debug.hlsl", "ambient_occlusion"); m_emissiveShader = MyShaders.CreatePs("debug.hlsl", "emissive"); m_ambientDiffuseShader = MyShaders.CreatePs("debug.hlsl", "debug_ambient_diffuse"); m_ambientSpecularShader = MyShaders.CreatePs("debug.hlsl", "debug_ambient_specular"); m_edgeDebugShader = MyShaders.CreatePs("debug.hlsl", "debug_edge"); m_shadowsDebugShader = MyShaders.CreatePs("debug.hlsl", "cascades_shadow", MyRender11.ShaderCascadesNumberHeader()); m_NDotLShader = MyShaders.CreatePs("debug.hlsl", "NDotL"); m_screenVertexShader = MyShaders.CreateVs("debug.hlsl", "screenVertex"); m_blitTextureShader = MyShaders.CreatePs("debug.hlsl", "blitTexture"); m_blitTexture3DShader = MyShaders.CreatePs("debug.hlsl", "blitTexture3D"); m_blitTextureArrayShader = MyShaders.CreatePs("debug.hlsl", "blitTextureArray"); m_inputLayout = MyShaders.CreateIL(m_screenVertexShader.BytecodeId, MyVertexLayouts.GetLayout(MyVertexInputComponentType.POSITION2, MyVertexInputComponentType.TEXCOORD0)); m_quadBuffer = MyHwBuffers.CreateVertexBuffer(6, MyVertexFormatPosition2Texcoord.STRIDE, BindFlags.VertexBuffer, ResourceUsage.Dynamic); }
internal static unsafe void Init() { //MyRender11.RegisterSettingsChangedListener(new OnSettingsChangedDelegate(RecreateShadersForSettings)); DirectionalEnvironmentLight_Pixel = MyShaders.CreatePs("light.hlsl", "directional_environment", MyRender11.ShaderCascadesNumberHeader()); DirectionalEnvironmentLight_Sample = MyShaders.CreatePs("light.hlsl", "directional_environment", MyShaderHelpers.FormatMacros(MyRender11.ShaderSampleFrequencyDefine()) + MyRender11.ShaderCascadesNumberHeader()); PointlightsTiled_Pixel = MyShaders.CreatePs("light.hlsl", "pointlights_tiled", MyRender11.ShaderCascadesNumberHeader()); PointlightsTiled_Sample = MyShaders.CreatePs("light.hlsl", "pointlights_tiled", MyShaderHelpers.FormatMacros(MyRender11.ShaderSampleFrequencyDefine()) + MyRender11.ShaderCascadesNumberHeader()); m_preparePointLights = MyShaders.CreateCs("prepare_lights.hlsl", "prepare_lights", MyShaderHelpers.FormatMacros("NUMTHREADS " + TILE_SIZE)); SpotlightProxyVs = MyShaders.CreateVs("light.hlsl", "proxyVs"); SpotlightPs_Pixel = MyShaders.CreatePs("light.hlsl", "spotlightFromProxy", MyRender11.ShaderCascadesNumberHeader()); SpotlightPs_Sample = MyShaders.CreatePs("light.hlsl", "spotlightFromProxy", MyShaderHelpers.FormatMacros(MyRender11.ShaderSampleFrequencyDefine()) + MyRender11.ShaderCascadesNumberHeader()); SpotlightProxyIL = MyShaders.CreateIL(SpotlightProxyVs.BytecodeId, MyVertexLayouts.GetLayout(MyVertexInputComponentType.POSITION_PACKED)); var stride = sizeof(MyPointlightConstants); m_pointlightCullHwBuffer = MyHwBuffers.CreateStructuredBuffer(MyRender11Constants.MAX_POINT_LIGHTS, stride, true); m_pointlightsConstants = MyHwBuffers.CreateConstantsBuffer(sizeof(MyPointlightInfo) * MyRender11Constants.MAX_POINT_LIGHTS); m_spotlightsConstants = MyHwBuffers.CreateConstantsBuffer(sizeof(MySpotlightConstants) * MyRender11Constants.MAX_SPOTLIGHTS); m_sunlightConstants = MyHwBuffers.CreateConstantsBuffer(sizeof(MySunlightConstantsLayout)); }