コード例 #1
0
        public override void Apply(Material material)
        {
            base.Apply(material);

            material.SetTexture(P3dShader._Texture, Texture);
            material.SetColor(P3dShader._Color, P3dHelper.FromGamma(Color));
        }
コード例 #2
0
        public override void Apply(Material material)
        {
            base.Apply(material);

            Blend.Apply(material);

            var inv = Matrix.inverse;

            material.SetFloat(P3dShader._In3D, In3D ? 1.0f : 0.0f);
            material.SetVector(P3dShader._Position, inv.MultiplyPoint(Position));
            material.SetVector(P3dShader._EndPosition, inv.MultiplyPoint(EndPosition));
            material.SetVector(P3dShader._Position2, inv.MultiplyPoint(Position2));
            material.SetVector(P3dShader._EndPosition2, inv.MultiplyPoint(EndPosition2));
            material.SetMatrix(P3dShader._Matrix, inv);
            material.SetColor(P3dShader._Color, P3dHelper.FromGamma(Color));
            material.SetFloat(P3dShader._Opacity, Opacity);
            material.SetFloat(P3dShader._Hardness, Hardness);
            material.SetTexture(P3dShader._TileTexture, TileTexture);
            material.SetMatrix(P3dShader._TileMatrix, TileMatrix);
            material.SetFloat(P3dShader._TileOpacity, TileOpacity);
            material.SetFloat(P3dShader._TileTransition, TileTransition);
            material.SetMatrix(P3dShader._MaskMatrix, MaskMatrix);
            material.SetTexture(P3dShader._MaskTexture, MaskShape);
            material.SetVector(P3dShader._MaskChannel, MaskChannel);
            material.SetVector(P3dShader._MaskStretch, MaskStretch);
        }
コード例 #3
0
        public override void Apply()
        {
            Blend.Apply(Material);

            var inv = Matrix.inverse;

            Material.SetFloat(P3dShader._In3D, In3D ? 1.0f : 0.0f);
            Material.SetVector(P3dShader._Position, inv.MultiplyPoint(Position));
            Material.SetVector(P3dShader._EndPosition, inv.MultiplyPoint(EndPosition));
            Material.SetVector(P3dShader._Position2, inv.MultiplyPoint(Position2));
            Material.SetVector(P3dShader._EndPosition2, inv.MultiplyPoint(EndPosition2));
            Material.SetMatrix(P3dShader._Matrix, inv);
            Material.SetVector(P3dShader._Direction, Direction);
            Material.SetColor(P3dShader._Color, P3dHelper.FromGamma(Color));
            Material.SetFloat(P3dShader._Opacity, Opacity);
            Material.SetFloat(P3dShader._Hardness, Hardness);
            Material.SetFloat(P3dShader._Wrapping, Wrapping);
            Material.SetTexture(P3dShader._Texture, Texture);
            Material.SetTexture(P3dShader._Shape, Shape);
            Material.SetVector(P3dShader._ShapeChannel, ShapeChannel);
            Material.SetVector(P3dShader._NormalFront, NormalFront);
            Material.SetVector(P3dShader._NormalBack, NormalBack);
            Material.SetTexture(P3dShader._TileTexture, TileTexture);
            Material.SetMatrix(P3dShader._TileMatrix, TileMatrix);
            Material.SetFloat(P3dShader._TileOpacity, TileOpacity);
            Material.SetFloat(P3dShader._TileTransition, TileTransition);
            Material.SetMatrix(P3dShader._MaskMatrix, MaskMatrix);
            Material.SetTexture(P3dShader._MaskTexture, MaskShape);
            Material.SetVector(P3dShader._MaskChannel, MaskChannel);
            Material.SetVector(P3dShader._MaskStretch, MaskStretch);
        }
コード例 #4
0
        public override void Apply()
        {
            Blend.Apply(Material);

            Material.SetTexture(P3dShader._Texture, Texture);
            Material.SetColor(P3dShader._Color, P3dHelper.FromGamma(Color));
            Material.SetFloat(P3dShader._Opacity, Opacity);
            Material.SetVector(P3dShader._Minimum, new Vector4(Minimum, Minimum, Minimum, Minimum));
        }
コード例 #5
0
        public static void Premultiply(RenderTexture rendertexture, Texture texture, Color tint)
        {
            if (cachedPremultiplySet == false)
            {
                cachedPremultiply    = P3dShader.BuildMaterial("Hidden/Paint in 3D/Premultiply");
                cachedPremultiplySet = true;
            }

            cachedPremultiply.SetTexture(P3dShader._Texture, texture);
            cachedPremultiply.SetColor(P3dShader._Color, P3dHelper.FromGamma(tint));

            P3dHelper.Blit(rendertexture, cachedPremultiply, 0);
        }
コード例 #6
0
        public void Apply(Material material)
        {
            material.SetVector(P3dShader._Channels, Channels);

            if (Index == REPLACE_CUSTOM || Index == REPLACE_ORIGINAL)
            {
                material.SetColor(P3dShader._ReplaceColor, P3dHelper.FromGamma(Color));
                material.SetTexture(P3dShader._ReplaceTexture, Texture);

                if (Texture != null)
                {
                    material.SetVector(P3dShader._ReplaceTextureSize, new Vector2(Texture.width, Texture.height));
                }
            }
        }
コード例 #7
0
        private void BakeOverlap()
        {
            var desc          = new RenderTextureDescriptor(1024, 1024, RenderTextureFormat.ARGB32, 0);
            var renderTexture = P3dHelper.GetRenderTexture(desc);

            if (overlapMaterial == null)
            {
                overlapMaterial = P3dShader.BuildMaterial("Hidden/Paint in 3D/Overlap");
            }

            overlapMaterial.SetVector(P3dShader._Coord, P3dHelper.IndexToVector(coord));

            var oldActive = RenderTexture.active;

            RenderTexture.active = renderTexture;

            GL.Clear(true, true, Color.black);

            overlapMaterial.SetPass(0);

            Graphics.DrawMeshNow(mesh, Matrix4x4.identity, submesh);

            foreach (var obj in Selection.objects)
            {
                var otherMesh = obj as Mesh;

                if (otherMesh != null && otherMesh != mesh)
                {
                    Graphics.DrawMeshNow(otherMesh, Matrix4x4.identity, submesh);
                }
            }

            RenderTexture.active = oldActive;

            overlapTex = P3dHelper.GetReadableCopy(renderTexture);

            P3dHelper.ReleaseRenderTexture(renderTexture);

            var utilizationCount = 0;
            var overlapCount     = 0;

            for (var y = 0; y < overlapTex.height; y++)
            {
                for (var x = 0; x < overlapTex.width; x++)
                {
                    var pixel = P3dHelper.FromGamma(overlapTex.GetPixel(x, y));

                    if (pixel.r > 0.0f)
                    {
                        if (pixel.r > 1.5 / 255.0f)
                        {
                            pixel = Color.red;

                            overlapCount += 1;
                        }
                        else
                        {
                            pixel = Color.gray;
                        }

                        utilizationCount += 1;

                        overlapTex.SetPixel(x, y, pixel);
                    }
                }
            }

            var total = overlapTex.width * overlapTex.height * 0.01f;

            utilizationPercent = utilizationCount / total;
            overlapPercent     = overlapCount / total;

            overlapTex.Apply();
        }
コード例 #8
0
 public override void Apply()
 {
     Material.SetTexture(P3dShader._Texture, Texture);
     Material.SetColor(P3dShader._Color, P3dHelper.FromGamma(Color));
 }