public override void Apply(Material material) { base.Apply(material); material.SetTexture(P3dShader._Texture, Texture); material.SetColor(P3dShader._Color, P3dHelper.FromGamma(Color)); }
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); }
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); }
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)); }
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); }
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)); } } }
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(); }
public override void Apply() { Material.SetTexture(P3dShader._Texture, Texture); Material.SetColor(P3dShader._Color, P3dHelper.FromGamma(Color)); }