예제 #1
0
    void OnRenderObject()
    {
        if (UseComputeData)
        {
            cso = GetComponent<ComputeShaderOutput>();
            wso = GetComponent<WeatherShaderOutput>();

            if (outputBuffer == null && cso != null)
                outputBuffer = cso.outputBuffer;

            if (outputBuffer == null && wso != null)
                outputBuffer = wso.outputBuffer;

            if (cso != null)
                cso.Dispatch();
            else
            {
                wso.Dispatch();
                Wind = wso.wind;
            }
        }

        material.SetPass(0);
        material.SetColor("_Color", color);
        material.SetBuffer("buf_Points", outputBuffer);
        material.SetTexture("_Sprite", sprite);
        material.SetVector("_Size", size);
        material.SetInt("_StaticCylinderSpherical", billboardType);
        material.SetVector("_worldPos", transform.position);
        material.SetVector("_Wind", Wind);

        Graphics.DrawProcedural(MeshTopology.Points, outputBuffer.count);
    }
예제 #2
0
 void Start()
 {
     material = new Material(geomShader);
     cso      = GetComponent <ComputeShaderOutput>();
     if (cso == null)
     {
         Debug.Log("You need the ComputeShaderOutput component");
         Destroy(gameObject);
     }
 }
예제 #3
0
    void OnRenderObject()
    {
        if (UseComputeData)
        {
            cso = GetComponent <ComputeShaderOutput> ();
            wso = GetComponent <WeatherShaderOutput> ();

            if (outputBuffer == null && cso != null)
            {
                outputBuffer = cso.outputBuffer;
            }

            if (outputBuffer == null && wso != null)
            {
                outputBuffer = wso.outputBuffer;
            }

            if (cso != null)
            {
                cso.Dispatch();
            }
            else
            {
                wso.Dispatch();
                Wind = wso.wind;
            }
            if (outputBuffer == null && cso != null)
            {
                outputBuffer = cso.outputBuffer;
            }
        }

        material.SetPass(0);
        material.SetColor("_Color", color);
        material.SetBuffer("buf_Points", outputBuffer);
        material.SetTexture("_Sprite", sprite);
        material.SetVector("_Size", size);
        material.SetInt("_StaticCylinderSpherical", billboardType);
        material.SetVector("_worldPos", transform.position);
        material.SetVector("_Wind", Wind);

        Graphics.DrawProcedural(MeshTopology.Points, outputBuffer.count);
    }