コード例 #1
0
    void OnWillRenderObject()
    {
        //Before the object is rendered

        //We store per-object SSS settings in material copies on each affected renderer's SSSSS_Object script (propertiesHostMat)
        //We use camera events so that SSS objects could swap between the properties host and original materials when rendering the mask
        //This way we can avoid original materials getting instantiated

        if (mainScript == null)
        {
            mainScript = Object.FindObjectOfType <CP_SSSSS_Main>();
        }

        if (mainScript != null)
        {
            if (Camera.current.name == mainScript.camName)
            {
                SubstituteMaterial();
                UpdateSSS();
                Camera.onPostRender -= RevertMaterial;
                Camera.onPostRender += RevertMaterial;
            }
        }
    }
コード例 #2
0
 // Use this for initialization
 void Start()
 {
     r = GetComponent <Renderer>();
     parameters.Clear();
     subMeshIndicies.Clear();
     if (r)
     {
         var sharedMaterials = r.sharedMaterials;
         for (int i = 0; i < sharedMaterials.Length; ++i)
         {
             var material = sharedMaterials[i];
             if (i < scatteringColorsPerSubmesh.Length && scatteringColorsPerSubmesh[i].color != Color.black && material.renderQueue != (int)UnityEngine.Rendering.RenderQueue.Transparent)
             {
                 subMeshIndicies.Add(i);
                 parameters.Add(CP_SSSSS_Main.MakeSSSParameterFromTextureAndColor(scatteringColorsPerSubmesh[i]));
             }
             else if (CP_SSSSS_Main.HasMaterialSSSParameter(material) && material.renderQueue != (int)UnityEngine.Rendering.RenderQueue.Transparent)
             {
                 subMeshIndicies.Add(i);
                 parameters.Add(CP_SSSSS_Main.MakeSSSParameterFromMaterial(material));
             }
         }
     }
 }