| 1782 | } |
| 1783 | |
| 1784 | IPipelineState* PBR_Renderer::GetPSO(PsoHashMapType& PsoHashMap, |
| 1785 | const GraphicsPipelineDesc& GraphicsDesc, |
| 1786 | const PSOKey& Key, |
| 1787 | PsoCacheAccessor::GET_FLAGS GetFlags) |
| 1788 | { |
| 1789 | PSO_FLAGS Flags = Key.GetFlags(); |
| 1790 | if (!m_Settings.EnableIBL) |
| 1791 | { |
| 1792 | Flags &= ~PSO_FLAG_USE_IBL; |
| 1793 | } |
| 1794 | if (!m_Settings.EnableAO) |
| 1795 | { |
| 1796 | Flags &= ~PSO_FLAG_USE_AO_MAP; |
| 1797 | } |
| 1798 | if (!m_Settings.EnableEmissive) |
| 1799 | { |
| 1800 | Flags &= ~PSO_FLAG_USE_EMISSIVE_MAP; |
| 1801 | } |
| 1802 | if (!m_Settings.EnableClearCoat) |
| 1803 | { |
| 1804 | Flags &= ~PSO_FLAG_ENABLE_CLEAR_COAT; |
| 1805 | } |
| 1806 | if (!m_Settings.EnableSheen) |
| 1807 | { |
| 1808 | Flags &= ~PSO_FLAG_ENABLE_SHEEN; |
| 1809 | } |
| 1810 | if (!m_Settings.EnableAnisotropy) |
| 1811 | { |
| 1812 | Flags &= ~PSO_FLAG_ENABLE_ANISOTROPY; |
| 1813 | } |
| 1814 | if (!m_Settings.EnableIridescence) |
| 1815 | { |
| 1816 | Flags &= ~PSO_FLAG_ENABLE_IRIDESCENCE; |
| 1817 | } |
| 1818 | if (!m_Settings.EnableTransmission) |
| 1819 | { |
| 1820 | Flags &= ~PSO_FLAG_ENABLE_TRANSMISSION; |
| 1821 | } |
| 1822 | if (!m_Settings.EnableVolume) |
| 1823 | { |
| 1824 | Flags &= ~PSO_FLAG_ENABLE_VOLUME; |
| 1825 | } |
| 1826 | if (!m_Settings.EnableShadows) |
| 1827 | { |
| 1828 | Flags &= ~PSO_FLAG_ENABLE_SHADOWS; |
| 1829 | } |
| 1830 | |
| 1831 | if (m_Settings.MaxJointCount == 0) |
| 1832 | { |
| 1833 | Flags &= ~PSO_FLAG_USE_JOINTS; |
| 1834 | } |
| 1835 | if (m_Settings.UseSeparateMetallicRoughnessTextures) |
| 1836 | { |
| 1837 | DEV_CHECK_ERR((Flags & PSO_FLAG_USE_PHYS_DESC_MAP) == 0, "Physical descriptor map is not enabled"); |
| 1838 | } |
| 1839 | else |
| 1840 | { |
| 1841 | DEV_CHECK_ERR((Flags & (PSO_FLAG_USE_METALLIC_MAP | PSO_FLAG_USE_ROUGHNESS_MAP)) == 0, "Separate metallic and roughness maps are not enaled"); |