Exemple #1
0
    protected void InitMaterial(MaterialPropertyBlock mat, DrawSurfaceTask t)
    {
        if (shaderValueAtmEnabled)
        {
            InitAtmosphere(mat);
        }
        UpdateMaterial(mat, t);
        mat.SetMatrix(shaderPropertyUvMat, VtsUtil.V2U33(t.data.uvm));
        int flags = 0; // _Flags: mask, monochromatic, flat shading, uv source

        if (t.texMask != null)
        {
            flags |= 1 << 0;
            mat.SetTexture(shaderPropertyMaskTex, (t.texMask as VtsTexture).Get());
        }
        if ((t.texColor as VtsTexture).monochromatic)
        {
            flags |= 1 << 1;
        }
        if (t.data.externalUv)
        {
            flags |= 1 << 3;
        }
        mat.SetInt(shaderPropertyFlags, flags);
        mat.SetTexture(shaderPropertyMainTex, (t.texColor as VtsTexture).Get());
        mat.SetTexture(shaderPropertyTexBlueNoise, blueNoiseTexture);
    }
Exemple #2
0
    private void UpdatePart(GameObject o, DrawSurfaceTask t)
    {
        o.layer = renderLayer;
        o.GetComponent <MeshFilter>().mesh             = (t.mesh as VtsMesh).Get();
        o.GetComponent <VtsObjectShiftingOrigin>().map = shiftingOriginMap;
        Material mat = o.GetComponent <MeshRenderer>().material;

        UpdateMaterial(mat);
        bool monochromatic = false;

        if (t.texColor != null)
        {
            var tt = t.texColor as VtsTexture;
            mat.SetTexture(shaderPropertyMainTex, tt.Get());
            monochromatic = tt.monochromatic;
        }
        if (t.texMask != null)
        {
            var tt = t.texMask as VtsTexture;
            mat.SetTexture(shaderPropertyMaskTex, tt.Get());
        }
        mat.SetMatrix(shaderPropertyUvMat, VtsUtil.V2U33(t.data.uvm));
        mat.SetVector(shaderPropertyUvClip, VtsUtil.V2U4(t.data.uvClip));
        mat.SetVector(shaderPropertyColor, VtsUtil.V2U4(t.data.color));
        // flags: mask, monochromatic, flat shading, uv source
        mat.SetVector(shaderPropertyFlags, new Vector4(t.texMask == null ? 0 : 1, monochromatic ? 1 : 0, 0, t.data.externalUv ? 1 : 0));
        VtsUtil.Matrix2Transform(o.transform, VtsUtil.V2U44(Math.Mul44x44(conv, System.Array.ConvertAll(t.data.mv, System.Convert.ToDouble))));
    }
 private void UpdatePart(Part part, DrawSurfaceTask task)
 {
     if (originHasShifted)
     {
         UpdateTransform(part, task);
     }
     part.mr.GetPropertyBlock(propertyBlock);
     UpdateMaterial(propertyBlock, task);
     part.mr.SetPropertyBlock(propertyBlock);
 }
Exemple #4
0
 protected void UpdateMaterial(MaterialPropertyBlock mat, DrawSurfaceTask t)
 {
     if (shaderValueAtmEnabled)
     {
         UpdateAtmosphere(mat);
     }
     mat.SetVector(shaderPropertyUvClip, VtsUtil.V2U4(t.data.uvClip));
     mat.SetVector(shaderPropertyColor, VtsUtil.V2U4(t.data.color));
     mat.SetFloat(shaderPropertyBlendingCoverage, float.IsNaN(t.data.blendingCoverage) ? -1 : t.data.blendingCoverage);
     mat.SetInt(shaderPropertyFrameIndex, shaderValueFrameIndex);
 }
    private Part InitPart(GameObject prefab, DrawSurfaceTask task)
    {
        Part part = new Part();

        part.go = Instantiate(prefab, partsGroup);
        UpdateTransform(part, task);
        part.mf      = part.go.GetOrAddComponent <MeshFilter>();
        part.mf.mesh = (task.mesh as VtsMesh).Get();
        InitMaterial(propertyBlock, task);
        part.mr = part.go.GetOrAddComponent <MeshRenderer>();
        part.mr.SetPropertyBlock(propertyBlock);
        if (shiftingOriginMap)
        {
            part.go.GetOrAddComponent <VtsObjectShiftingOrigin>().map = shiftingOriginMap;
        }
        return(part);
    }
 private void UpdateTransform(Part part, DrawSurfaceTask task)
 {
     VtsUtil.Matrix2Transform(part.go.transform, VtsUtil.V2U44(Math.Mul44x44(conv, System.Array.ConvertAll(task.data.mv, System.Convert.ToDouble))));
 }