void DrawDiffusionProfileUI() { if (DiffusionProfileMaterialUI.IsSupported(materialEditor)) { DiffusionProfileMaterialUI.OnGUI(FindProperty("_DiffusionProfileAsset"), FindProperty("_DiffusionProfileHash")); } }
public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] props) { materialEditor.PropertiesDefaultGUI(props); if (materialEditor.EmissionEnabledProperty()) { materialEditor.LightmapEmissionFlagsProperty(MaterialEditor.kMiniTextureFieldLabelIndentLevel, true, true); } // Make sure all selected materials are initialized: // Default to disable "MotionVectors" pass when no legacy SubShader tag "MotionVector" is found, // then show and enable "MotionVectors" pass or not based on UI input. string materialTag = "MotionVector"; foreach (var obj in materialEditor.targets) { var material = (Material)obj; string tag = material.GetTag(materialTag, false, "Nothing"); if (tag == "Nothing") { material.SetShaderPassEnabled(HDShaderPassNames.s_MotionVectorsStr, false); material.SetOverrideTag(materialTag, "User"); } } { // If using multi-select, apply toggled material to all materials. bool enabled = ((Material)materialEditor.target).GetShaderPassEnabled(HDShaderPassNames.s_MotionVectorsStr); EditorGUI.BeginChangeCheck(); enabled = EditorGUILayout.Toggle("Motion Vector For Vertex Animation", enabled); if (EditorGUI.EndChangeCheck()) { foreach (var obj in materialEditor.targets) { var material = (Material)obj; material.SetShaderPassEnabled(HDShaderPassNames.s_MotionVectorsStr, enabled); } } } if (DiffusionProfileMaterialUI.IsSupported(materialEditor)) { DiffusionProfileMaterialUI.OnGUI(FindProperty("_DiffusionProfileAsset", props), FindProperty("_DiffusionProfileHash", props)); } }
void ShaderSSSAndTransmissionInputGUI() { var hdPipeline = RenderPipelineManager.currentPipeline as HDRenderPipeline; if (hdPipeline == null) { return; } DiffusionProfileMaterialUI.OnGUI(diffusionProfileAsset[m_LayerIndex], diffusionProfileHash[m_LayerIndex]); // TODO: does not work with multi-selection if ((int)materialID.floatValue == (int)MaterialId.LitSSS && materials[0].GetSurfaceType() != SurfaceType.Transparent) { materialEditor.ShaderProperty(subsurfaceMask[m_LayerIndex], Styles.subsurfaceMaskText); materialEditor.TexturePropertySingleLine(Styles.subsurfaceMaskMapText, subsurfaceMaskMap[m_LayerIndex]); } if ((int)materialID.floatValue == (int)MaterialId.LitTranslucent || ((int)materialID.floatValue == (int)MaterialId.LitSSS && transmissionEnable.floatValue > 0.0f)) { materialEditor.TexturePropertySingleLine(Styles.thicknessMapText, thicknessMap[m_LayerIndex]); if (thicknessMap[m_LayerIndex].textureValue != null) { // Display the remap of texture values. Vector2 remap = thicknessRemap[m_LayerIndex].vectorValue; EditorGUI.BeginChangeCheck(); EditorGUILayout.MinMaxSlider(Styles.thicknessRemapText, ref remap.x, ref remap.y, 0.0f, 1.0f); if (EditorGUI.EndChangeCheck()) { thicknessRemap[m_LayerIndex].vectorValue = remap; } } else { // Allow the user to set the constant value of thickness if no thickness map is provided. materialEditor.ShaderProperty(thickness[m_LayerIndex], Styles.thicknessText); } } }