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); }
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); }
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)))); }