Adobe libera código fonte do Photoshop 1.0

[quote=x@ndy][quote=entanglement][quote=x@ndy]Bom então o Photoshop tem uma implementação para cada api de placa de video? Como isso funciona afinal? Nunca vi que para instalar o Photoshop é necessário o DirectXX por exemplo como acontece com um Game, e isso nem nas versões mais novas!
[/quote]

O que o pessoal está dizendo é que o Photoshop, para implementar filtros, pode usar a GPU se houver drivers CUDA ou OpenCL para essa placa de vídeo. Só isso :slight_smile:

http://www.tomshardware.com/reviews/photoshop-cs6-gimp-aftershot-pro,3208-13.html[/quote]

Ok, mas e se não tiver disponível um placa de video com esses recursos? O que foi colocado, pode ser que eu tenha entendido mal, é que ele não faz mais esses cálculos, e sim as placas de vídeo! Porém ele também funciona sem as respectivas placas.[/quote]

A vantagem da gpu é que elas podem realizar calculos complexos diretamente via hardware que são inviáveis fazer por software. Por exemplo somar matrizes e vetores diretamente como 1+1=2.

Você pode criar uma superfície opengl e processar a imagem diretamente na placa de vídeo para ganhar desempenho. Mas isso não quer dizer que o algoritmo esteja “implementado nela”.

Existe um livro :

O meu é encapado com couro, edição especia(comprei tem quase 10 anos). Há muito não temos algoritmos novos nessa área porque boa parte do que é preciso já foi implementado em todas as áreas como análise, aritmética, operações de ponto, morfologia, filtros digitais, operações geométricas, etc…

As ferramentas de hoje utilizam todos esses fundamentos e alguma coisa nova é criada a partir deles. Muito pouco por sinal.

[quote=marcosalex][quote=x@ndy][quote=javaflex]
Mega Drive serve?[/quote]

Cara, o que tem haver a placa de video com algorítimos para tratamento de imagem? Placa de video fazem cálculos de renderização de imagens vetoriais, até onde eu sei, por isso são ótimas para Jogos. O photoshop não usa vetores e mesmo que utilize é uma implementação para aproveitar um recurso especifico, ou seja, ele utiliza os mesmos algoritmos, só que usa o recurso da placa de video para otimizar o calculo.[/quote]
Placas de vídeo não fazem apenas cálculo vetorial não. Possuem muitos recursos de manipulação de imagem também e já possuem esses algoritmos em hardware. A maior parte desses filtros que o pessoal vê são chamadas de uma linha na api da placa de vídeo. Obviamente não conheço o código do Photoshop moderno, mas acho difícil que ele reinvente a roda implementando por software o que já existe em hardware, principalmente que o processamento vai pra placa de vídeo. [/quote]
Cite um algoritmo que está implementado na placa aceleradora relacionado com “processamento de imagens”?
Computação gráfica apenas, para desenhar, linhas, vetores e polígonos.

Acho que é em pascal simplesmente porque o pessoal conhecia e gostava mais de Pascal na época ué… rs

Sobre a pergunta de algoritmos implementados, tem vários sim, rotação e escala sei que tem rs. Deve ter um monte mais, e os que não estão em hardware, se podem ser paralelizados, ficam rápidos na gpu também.

[quote=dudaskank]Acho que é em pascal simplesmente porque o pessoal conhecia e gostava mais de Pascal na época ué… rs

Sobre a pergunta de algoritmos implementados, tem vários sim, rotação e escala sei que tem rs. Deve ter um monte mais, e os que não estão em hardware, se podem ser paralelizados, ficam rápidos na gpu também.[/quote]

hehe
Respondido.

[quote=marcosalex][quote=dudaskank]Acho que é em pascal simplesmente porque o pessoal conhecia e gostava mais de Pascal na época ué… rs

Sobre a pergunta de algoritmos implementados, tem vários sim, rotação e escala sei que tem rs. Deve ter um monte mais, e os que não estão em hardware, se podem ser paralelizados, ficam rápidos na gpu também.[/quote]

hehe
Respondido.[/quote]

Respondido com mentira né!? Placas aceleradoras não possuem algoritmos implementados, elas rotacionam poligonos trabalham com pontos, matrizes e vetores.
Processamento de imagens != computação gráfica.

[quote=dudaskank]Acho que é em pascal simplesmente porque o pessoal conhecia e gostava mais de Pascal na época ué… rs

Sobre a pergunta de algoritmos implementados, tem vários sim, rotação e escala sei que tem rs. Deve ter um monte mais, e os que não estão em hardware, se podem ser paralelizados, ficam rápidos na gpu também.[/quote]

Cita um aí sobre o tema processamento de imagens. Girar um polígono não é um algoritmo e isso é computação gráfica e não processamento de imagens.
O objetivo de toda placa aceleradora é paralelizar não!? Até porque isso já foi citado lá atras.

[quote=x@ndy]Fiz uma pesquisa rápida e vi que o é possível otimizar o PhotoShop habilitando o OpenGL Drawing, então ele usa recursos da placa de video, mas também permite o uso com a opção desabilitada ou seja ele não depende somente da placa de video para realizar as opções. Li também que o isso é ideal para trabalhar com efeitos 3D renderização ou seja imagem vetorial!
[/quote]

O que os players de vídeo como vlc fazem é usar uma superfície 3d da opengl e pintar o vídeo como textura em cima desse polígono. Você ganha desempenho porque está usando a gpu para realizar o trabalho que um intel hd levaria mais tempo para fazer por software.

Se eu rotacionar esse polígono eu rotaciono a textura e isso não é nenhum algoritmo implementado no hardware como citaram acima.

Boaa!!
Deveriao fazer isso com outros softwares tmbm!

Só estou curioso para saber que Pascal é esse. Se é Turbo, Free, Object…

O freepascal compilador compila object pascal.

Turbo Pascal é um compilador da antiga borland, e Free Pascal é um compilador de código aberto. Pelo que eu, vi acredito que seja Object Pascal (deve compilar com o Free Pascal, mas não tive tempo para testar :slight_smile: )

Fiquei nessa dúvida porque não vi nenhuma declaração de classe nesses códigos (ao menos os arquivos que eu vi) por isso queria ter certeza de que não se tratava de Object Pascal mas creio que estava errado hehe.

“TLineTool = OBJECT (TBufferCommand)” arquivo ULine.p! A declaração é diferente do Delphi e não vi nenhuma palavra chave para restringir a visibilidade dos campos, não sei se não tem ou se foi programado sem!

“TLineTool = OBJECT (TBufferCommand)” arquivo ULine.p! A declaração é diferente do Delphi e não vi nenhuma palavra chave para restringir a visibilidade dos campos, não sei se não tem ou se foi programado sem![/quote]

É um compilador pascal pra Macintosh antigo, não sei se todos os comandos você vai encontrar nos compiladores pascal modernos. Estou tentando achar um emulador dessa máquina mas ainda não encontrei.

Nesse caso, ele utiliza as APIs do Windows que (adivinhe) usam aceleração. Estou baixando um programa de manipulação open source pra mostrar o código, mas está demorando. De qualquer forma, acreditando ou não, nada vai mudar os fatos e tampouco mudará minha vida. hehehehe

“TLineTool = OBJECT (TBufferCommand)” arquivo ULine.p! A declaração é diferente do Delphi e não vi nenhuma palavra chave para restringir a visibilidade dos campos, não sei se não tem ou se foi programado sem![/quote]

Turbo Pascal’s Object Pascal
Still supported in Delphi and Free Pascal. FPC also packages its own substitutes for the libraries/units. Delphi doesn’t. The Free Pascal 1.0 series and the FPC textmode IDE are the largest open codebases in this dialect. Free Pascal 2.0 was rewritten in a more Delphi-like dialect, and the textmode IDE and related frameworks (Free Vision) are the only parts in the TP version of Object Pascal.

[code]program ObjectPascalExample;

type
PHelloWorld = ^THelloWorld;
THelloWorld = object
procedure Put;
end;

var
HelloWorld: PHelloWorld; { this is a pointer to a THelloWorld }

procedure THelloWorld.Put;
begin
WriteLn(‘Hello, World!’);
end;

begin
New(HelloWorld);
HelloWorld^.Put;
Dispose(HelloWorld);
end.
[/code]

Delphi and Free Pascal’s Object Pascal

[code]program ObjectPascalExample;

type
THelloWorld = class
procedure Put;
end;

procedure THelloWorld.Put;
begin
Writeln(‘Hello, World!’);
end;

var
HelloWorld: THelloWorld; { this is an implicit pointer }

begin
HelloWorld := THelloWorld.Create; { constructor returns a pointer to an object of type THelloWorld }
HelloWorld.Put;
HelloWorld.Free; { this line deallocates the THelloWorld object pointed to by HelloWorld }
end.
[/code]Note that the object construct is still available in Delphi and Free Pascal (Delphi-compatible mode).

De qualquer maneira, você não consegue fazer um build completo do Photoshop só com esse código que foi oferecido pela Adobe, porque você precisa ter uma licença do framework MacApp ( http://en.wikipedia.org/wiki/MacApp ) e mais algumas coisas que não tenho a menor idéia que sejam. Além disso, você precisa do Apple Object Pascal, que obviamente não faz parte do XCode :slight_smile:

Ele faz parte disto aqui: http://en.wikipedia.org/wiki/Macintosh_Programmer's_Workshop

Como é uma aplicação 68000, não roda de jeito nenhum em um MacOSX Mountain Lion :slight_smile:

“TLineTool = OBJECT (TBufferCommand)” arquivo ULine.p! A declaração é diferente do Delphi e não vi nenhuma palavra chave para restringir a visibilidade dos campos, não sei se não tem ou se foi programado sem![/quote]

É um compilador pascal pra Macintosh antigo, não sei se todos os comandos você vai encontrar nos compiladores pascal modernos. Estou tentando achar um emulador dessa máquina mas ainda não encontrei.

Nesse caso, ele utiliza as APIs do Windows que (adivinhe) usam aceleração. Estou baixando um programa de manipulação open source pra mostrar o código, mas está demorando. De qualquer forma, acreditando ou não, nada vai mudar os fatos e tampouco mudará minha vida. hehehehe [/quote]

Achei que o juliocbq já tinha esclarecido que aceleração não tem nada ver com o que o photoshop faz :smiley: !

“TLineTool = OBJECT (TBufferCommand)” arquivo ULine.p! A declaração é diferente do Delphi e não vi nenhuma palavra chave para restringir a visibilidade dos campos, não sei se não tem ou se foi programado sem![/quote]

É um compilador pascal pra Macintosh antigo, não sei se todos os comandos você vai encontrar nos compiladores pascal modernos. Estou tentando achar um emulador dessa máquina mas ainda não encontrei.

Nesse caso, ele utiliza as APIs do Windows que (adivinhe) usam aceleração. Estou baixando um programa de manipulação open source pra mostrar o código, mas está demorando. De qualquer forma, acreditando ou não, nada vai mudar os fatos e tampouco mudará minha vida. hehehehe [/quote]

Achei que o juliocbq já tinha esclarecido que aceleração não tem nada ver com o que o photoshop faz :smiley: ![/quote]

cara, tem a ver quando você paraleliza com a gpu. Por exemplo, você pode fazer operações pixel a pixel diretamente na placa de vídeo. O photoshop usa isso, assim como o gimp, etc… O que a placa de vídeo não faz é gerar algoritmos de análise como detectar bordas, somar imagens etc… Ma em termos de computação gráfica como operação com pontos, vetores, matrizes ela faz tudo. Inclusive desenhar polígonos complexos e a partir daí gerar formas bem mais complexas por hardware.

[quote=x@ndy][quote=marcosalex]
É um compilador pascal pra Macintosh antigo, não sei se todos os comandos você vai encontrar nos compiladores pascal modernos. Estou tentando achar um emulador dessa máquina mas ainda não encontrei.

Nesse caso, ele utiliza as APIs do Windows que (adivinhe) usam aceleração. Estou baixando um programa de manipulação open source pra mostrar o código, mas está demorando. De qualquer forma, acreditando ou não, nada vai mudar os fatos e tampouco mudará minha vida. hehehehe [/quote]

Achei que o juliocbq já tinha esclarecido que aceleração não tem nada ver com o que o photoshop faz :smiley: ![/quote]

Na verdade deu a opinião dele, Vamos aos fatos
http://helpx.adobe.com/photoshop/kb/gpu-opengl-support-photoshop-cs4.html
http://helpx.adobe.com/photoshop/kb/photoshop-cs6-gpu-faq.html
http://forums.extremeoverclocking.com/showthread.php?t=334777
E a própria API do Windows encarrega de usar aceleração quando o driver permitir para algumas instruções:
http://dpnow.com/forum2/showthread.php?t=9125


http://forums.anandtech.com/showthread.php?t=2251507

E quando não suporta nenhuma aceleração, ele ainda usa instruções SSE2, 3 ou 4, que não existiam na época

Então afirmar ‘com certeza’ 90% dos algoritmos é o mesmo acho um pouco forçado. Mas, como eu disse antes, se quiser acreditar nisso, não vai afetar em nada minha vida, da mesma forma que questionar meu conhecimento, já que meu trabalho fala por si pra quem paga minhas contas. :lol: :lol:

No mais, pra não virar flame, declaro minha participação encerrada na discussão e aceito os pedidos de desculpas que vierem. heheheheh

“TLineTool = OBJECT (TBufferCommand)” arquivo ULine.p! A declaração é diferente do Delphi e não vi nenhuma palavra chave para restringir a visibilidade dos campos, não sei se não tem ou se foi programado sem![/quote]

É um compilador pascal pra Macintosh antigo, não sei se todos os comandos você vai encontrar nos compiladores pascal modernos. Estou tentando achar um emulador dessa máquina mas ainda não encontrei.

Nesse caso, ele utiliza as APIs do Windows que (adivinhe) usam aceleração. Estou baixando um programa de manipulação open source pra mostrar o código, mas está demorando. De qualquer forma, acreditando ou não, nada vai mudar os fatos e tampouco mudará minha vida. hehehehe [/quote]

Achei que o juliocbq já tinha esclarecido que aceleração não tem nada ver com o que o photoshop faz :smiley: ![/quote]

cara, tem a ver quando você paraleliza com a gpu. Por exemplo, você pode fazer operações pixel a pixel diretamente na placa de vídeo. O photoshop usa isso, assim como o gimp, etc… O que a placa de vídeo não faz é gerar algoritmos de análise como detectar bordas, somar imagens etc… Ma em termos de computação gráfica como operação com pontos, vetores, matrizes ela faz tudo. Inclusive desenhar polígonos complexos e a partir daí gerar formas bem mais complexas por hardware.[/quote]

Acho que estamos falando a mesma coisa. Resumidamente o Photoshop utiliza recursos da placa de vídeo para otimizar a realização de cálculos, baseados em algorítimos internos. Esses algorítimos NÃO estão na placa de video. Se o sistema tiver uma placa de video “genérica” o photoshop vai funcionar normalmente, porém mais lento. Ele não é dependente de placas de video para funcionar. É isso?