Example #1
0
    void SetUpDirectionalLight(int kernel)
    {
        if (m_dirLightColor == null || m_dirLightColor.Length != 3)
        {
            m_dirLightColor = new float[3];
        }
        if (m_dirLightDir == null || m_dirLightDir.Length != 3)
        {
            m_dirLightDir = new float[3];
        }

        if (m_DirectionalLight == null)
        {
            m_dirLightColor[0] = 0;
            m_dirLightColor[1] = 0;
            m_dirLightColor[2] = 0;
            m_InjectLightingAndDensity.SetFloats("_DirLightColor", m_dirLightColor);
            return;
        }

        m_DirectionalLight.SetUpDirectionalShadowmapForSampling(m_DirectionalLight.m_Shadows, m_InjectLightingAndDensity, kernel);
        // TODO: if above fails, disable shadows

        Light   light = m_DirectionalLight.light;
        Vector4 color = light.color;

        color *= light.intensity * m_DirectionalLight.m_IntensityMult;
        m_dirLightColor[0] = color.x;
        m_dirLightColor[1] = color.y;
        m_dirLightColor[2] = color.z;
        m_InjectLightingAndDensity.SetFloats("_DirLightColor", m_dirLightColor);
        Vector3 dir = light.GetComponent <Transform>().forward;

        m_dirLightDir[0] = dir.x;
        m_dirLightDir[1] = dir.y;
        m_dirLightDir[2] = dir.z;
        m_InjectLightingAndDensity.SetFloats("_DirLightDir", m_dirLightDir);
    }