publicreadonlyGUIContentprofileMinMaxThickness=newGUIContent("Min-Max Thickness (mm)","Shows the values of the thickness remap below (in millimeters).");
publicreadonlyGUIContentprofileThicknessRemap=newGUIContent("Thickness Remap (mm)","Remaps the thickness parameter from [0, 1] to the desired range (in millimeters).");
publicreadonlyGUIContentprofileWorldScale=newGUIContent("World Scale","Size of the world unit in meters.");
publicreadonlyGUIContentprofileIor=newGUIContent("Index of Refraction","Index of refraction. 1.4 for skin. 1.5 for most other material.");
publicreadonlyGUIContentprofileIor=newGUIContent("Index of Refraction","Index of refraction. 1.4 for skin. Between 1.3-1.5 for most other material.");
// Jimenez SSS Model
publicreadonlyGUIContentprofileScatterDistance1=newGUIContent("Scattering Distance #1","The radius (in centimeters) of the 1st Gaussian filter, one per color channel. Alpha is ignored. The blur is energy-preserving, so a wide filter results in a large area with small contributions of individual samples. Smaller values increase the sharpness.");
publicreadonlyGUIContentprofileScatterDistance2=newGUIContent("Scattering Distance #2","The radius (in centimeters) of the 2nd Gaussian filter, one per color channel. Alpha is ignored. The blur is energy-preserving, so a wide filter results in a large area with small contributions of individual samples. Smaller values increase the sharpness.");
publicstaticGUIContentlinkDetailsWithBaseText=newGUIContent("Lock to Base Tiling/Offset","Lock details Tiling/Offset to Base Tiling/Offset");
// Subsurface
publicstaticGUIContentdiffusionProfileText=newGUIContent("Diffusion profile","A profile determines the shape of the blur/transmission filter.");
publicstaticGUIContentsubsurfaceMaskText=newGUIContent("Subsurface radius","Determines the range of the blur.");
publicstaticGUIContentsubsurfaceMaskMapText=newGUIContent("Subsurface radius map (R)","Determines the range of the blur.");
publicstaticGUIContentdiffusionProfileText=newGUIContent("Diffusion profile","A profile determines the shape of the SSS/transmission filter.");
publicstaticGUIContentsubsurfaceMaskText=newGUIContent("Subsurface mask","Determines the strength of the subsurface scattering effect.");
publicstaticGUIContentsubsurfaceMaskMapText=newGUIContent("Subsurface mask map (R)","Determines the strength of the subsurface scattering effect.");
publicstaticGUIContentthicknessText=newGUIContent("Thickness","If subsurface scattering is enabled, low values allow some light to be transmitted through the object.");
publicstaticGUIContentthicknessMapText=newGUIContent("Thickness map (R)","If subsurface scattering is enabled, low values allow some light to be transmitted through the object.");
publicstaticGUIContentthicknessRemapText=newGUIContent("Thickness Remap","Remaps values of the thickness map from [0, 1] to the specified range.");
Debug.Assert(DiffusionProfileConstants.DIFFUSION_NEUTRAL_PROFILE_ID<16,"Transmission flags (32-bit integer) cannot support more than 16 profiles (2 bits per profile).");
Debug.Assert(DiffusionProfileConstants.DIFFUSION_PROFILE_NEUTRAL_ID<16,"Transmission flags (32-bit integer) cannot support more than 16 profiles (2 bits per profile).");
// Always assign even if not used, DIFFUSION_NEUTRAL_PROFILE_ID is 0
// Note: we have ZERO_INITIALIZE the struct, so bsdfData.diffusionProfile == DIFFUSION_NEUTRAL_PROFILE_ID, bsdfData.anisotropy == 0.0, bsdfData.SubsurfaceMask == 0.0 etc...
// Always assign even if not used, DIFFUSION_PROFILE_NEUTRAL_ID is 0
// Note: we have ZERO_INITIALIZE the struct, so bsdfData.diffusionProfile == DIFFUSION_PROFILE_NEUTRAL_ID, bsdfData.anisotropy == 0.0, bsdfData.SubsurfaceMask == 0.0 etc...
// Process SSS and Transmission together as they encode almost the same data
if (bsdfData.enableSubsurfaceScattering || bsdfData.enableTransmission)