Ejemplo n.º 1
0
 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());
     }
 }
Ejemplo n.º 2
0
 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()));
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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));
        }