Пример #1
0
    string GetLightString(LightObj lightObj)
    {
        Light  l   = lightObj.GetComponent <Light>();
        string str = string.Format(
            @"light_source{{
    #declare intensity = {3};
    <{0}, {1}, {2}> rgb <intensity, intensity, intensity>
{4}
}}", l.transform.position.x, l.transform.position.y, l.transform.position.z, l.intensity, GetLightParamsString(l));

        //0 1 2 : x y z
        //3 : light intensity
        //4 light type
        //5 light params

        return(str);
    }
Пример #2
0
    void Update()
    {
        //Move
        if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
        {
            transform.position += new Vector3(TheCamera.forward.x, 0, TheCamera.forward.z).normalized *Time.deltaTime *MoveSpeed;
        }
        else if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
        {
            transform.position -= new Vector3(TheCamera.forward.x, 0, TheCamera.forward.z).normalized *Time.deltaTime *MoveSpeed;
        }
        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
        {
            transform.position -= new Vector3(TheCamera.right.x, 0, TheCamera.right.z).normalized *Time.deltaTime *MoveSpeed;
        }
        else if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
        {
            transform.position += new Vector3(TheCamera.right.x, 0, TheCamera.right.z).normalized *Time.deltaTime *MoveSpeed;
        }
        //Camera Rote
        if (CanRot)
        {
            if (PressLeftMBToRot)
            {
                if (Input.GetMouseButton(0))
                {
                    while (CameraRot.x > 90)
                    {
                        CameraRot -= new Vector3(180, 0, 0);
                    }
                    while (CameraRot.x < -90)
                    {
                        CameraRot += new Vector3(180, 0, 0);
                    }
                    while (CameraRot.y > 180)
                    {
                        CameraRot -= new Vector3(0, 360, 0);
                    }
                    while (CameraRot.y < -180)
                    {
                        CameraRot += new Vector3(0, 360, 0);
                    }

                    TheX = CameraRot.x - Input.GetAxis("Mouse Y") * DeltaRotSpeed * Time.deltaTime;
                    if (TheX < -89)
                    {
                        TheX = -89;
                    }
                    if (TheX > 89)
                    {
                        TheX = 89;
                    }
                    TheY                  = CameraRot.y - Input.GetAxis("Mouse X") * DeltaRotSpeed * -0.6f * Time.deltaTime;
                    CameraRot             = new Vector3(TheX, TheY, 0);
                    TheCamera.eulerAngles = CameraRot;
                }
            }
            else
            {
                while (CameraRot.x > 90)
                {
                    CameraRot -= new Vector3(180, 0, 0);
                }
                while (CameraRot.x < -90)
                {
                    CameraRot += new Vector3(180, 0, 0);
                }
                while (CameraRot.y > 180)
                {
                    CameraRot -= new Vector3(0, 360, 0);
                }
                while (CameraRot.y < -180)
                {
                    CameraRot += new Vector3(0, 360, 0);
                }


                TheX = CameraRot.x - Input.GetAxis("Mouse Y") * DeltaRotSpeed * Time.deltaTime;
                if (TheX < -89)
                {
                    TheX = -89;
                }
                if (TheX > 89)
                {
                    TheX = 89;
                }
                TheY                  = CameraRot.y - Input.GetAxis("Mouse X") * DeltaRotSpeed * -0.6f * Time.deltaTime;
                CameraRot             = new Vector3(TheX, TheY, 0);
                TheCamera.eulerAngles = CameraRot;
            }
        }
        //Cursor Visible
        if (Input.GetKeyUp(KeyCode.Escape))
        {
            HideCursor     = !HideCursor;
            Cursor.visible = !HideCursor;
            if (HideCursor)
            {
                Cursor.lockState = CursorLockMode.Locked;
            }
            else
            {
                Cursor.lockState = CursorLockMode.None;
            }
        }

        //Move Up and Down
        if (CanUpAndDown)
        {
            if (Input.GetKey(KeyCode.Space))
            {
                TheCamera.position += Vector3.up * 0.1f * UpDownSpeed * Time.deltaTime;
            }
            else if (Input.GetKey(KeyCode.LeftShift))
            {
                TheCamera.position -= Vector3.up * 0.1f * UpDownSpeed * Time.deltaTime;
            }
        }

        if (Input.GetMouseButtonDown(0))
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                TheLO = hit.transform.GetComponent <LightObj>();
                if (TheLO)
                {
                    TheLO.OnClick();
                }
            }
        }
    }
Пример #3
0
        /// <summary>
        /// Method to build shadow maps.
        /// </summary>
        public void RenderShadowMap(LightObj light, int num, Matrix projection)
        {
            Matrix lightMatrix = Matrix.LookAtRH(light.Direction, new Vector3(0, 0, 0), new Vector3(0, 1, 0)) * projection;

            switch (num)
            {
            case 0:
                shadowHelp.BeginScene(shadowMap.GetSurfaceLevel(0));                        //, device.Viewport);
                break;

            case 1:
                shadowHelp.BeginScene(shadowMap2.GetSurfaceLevel(0), device.Viewport);
                break;

            case 2:
                shadowHelp.BeginScene(shadowMap3.GetSurfaceLevel(0), device.Viewport);
                break;
            }

            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);

            effect.Technique = "ShadowMap";
            effect.SetValue("maxDepth", light.Distance * 3);
            effect.SetValue("lightWVP", lightMatrix);

            effect.Begin(FX.None);
            effect.BeginPass(0);

            if (groundPlane.Enabled)
            {
                groundPlane.Mesh.DrawSubset(0);
            }

            for (int i = 0; i < mesh.Count; i++)
            {
                if (mesh[i].Enabled)
                {
                    mesh[i].Mesh.DrawSubset(0);
                }
            }

            effect.EndPass();
            effect.End();

            shadowHelp.EndScene(Filter.Point);

//			shadowMap = shadowTest.

            switch (num)
            {
            case 0:
                effect.SetValue("shadowMapLight1", shadowMap);
                break;

            case 1:
                effect.SetValue("shadowMapLight2", shadowMap2);
                break;

            case 2:
                effect.SetValue("shadowMapLight3", shadowMap3);
                break;
            }
        }