Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Nelle ultime settimane abbiamo provato la Corsair Vanguard Air 99 Wireless, una tastiera tecnicamente da gaming, ma che in realtà offre un ampio ventaglio di possibilità anche al di fuori delle sessioni di gioco. Flessibilità e funzionalità sono le parole d'ordine di una periferica che si rivolge a chi cerca un prodotto capace di adattarsi a ogni esigenza e ogni piattaforma
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-01-2007, 16:48   #1
Fumereo
Senior Member
 
L'Avatar di Fumereo
 
Iscritto dal: Nov 2002
Città: Ivrea-Milano
Messaggi: 381
Normal Map in PS 2.0

Salve a tutti, volevo il parere di qualche mente piu' esperta nella programmazione dei pixel shader su un problema che sto cercando di affrontare diversi modi...

Lo scopo e' quello di dividere una nmap in piu' zone e poter gestire separatamente le intensita' di queste zone.

In pratica attraverso dei pesi (semplici valori float) sono in grado di aumentare o diminuire l'intensita' di applicazione della nmap in zone diverse.

Quindi se ho la nmap di un volto di una persona potro' decidere di agire indipendentemente sulle rughe della fronte piuttosto che su quelle del sopracciglio destro e via cosi'.

La divisione delle zone si gestisce attraverso l'alpha channel: In pratica la nmap e' una TGA 32bit. Il texture artist puo' disegnare diverse zone sul canale alpha e dotarle di una diversa opacità. A seconda del valore che ha l'alpha posso decidere nel pixel shader se applicare o no il bump in quel punto e di quanto.

Le limitazioni a questa tecnica sono il numero di zone gestibili. Io ho una 9800pro e posso gestire al massimo 64 operazioni aritmetiche nel ps.
Utilizzando dei banalissimi (ma piuttosto onerosi) IF ELSE per decidere se applicare o no la nmap in quel punto riesco al massimo a gestire 6 zone diverse.

Qualcuno magari si mettera' le mani nei capelli ma e' il primo ps che scrivo e non sono molto avvezzo di programmazione. Qualcuno per caso ha un idea migliore su come realizzare cio' che voglio?

a proposito: sto utilizzando linguaggio HLSL su rendermonkey
Fumereo è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2007, 11:49   #2
Fumereo
Senior Member
 
L'Avatar di Fumereo
 
Iscritto dal: Nov 2002
Città: Ivrea-Milano
Messaggi: 381
Fumereo è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2007, 14:38   #3
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Hmmm quindi tu vuoi che quando l'alpha vale 0 la trasformazione in texture space non venga eseguita?
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2007, 18:03   #4
Fumereo
Senior Member
 
L'Avatar di Fumereo
 
Iscritto dal: Nov 2002
Città: Ivrea-Milano
Messaggi: 381
nono!!

L'alpha lo uso solo per "disegnare" diverse zone sulla nmap.
Se l'alfa in una zona e' 0 potro' decidere se attivarci sopra il bump oppure no e di quanto.

Potendo al massimo gestire 6 "zone" ho separato i valori di alpha a 0, 20, 40, 60, 80 e 100 % di opacita'.

Con queste indicazioni il texture artist puo' decidere quali zone vanno processate con lo stesso valore di bump.

Se non e' ancora chiaro ditemi che provo a inserire delle immagini
Fumereo è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2007, 18:28   #5
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
beh si posta va
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2007, 19:01   #6
Fumereo
Senior Member
 
L'Avatar di Fumereo
 
Iscritto dal: Nov 2002
Città: Ivrea-Milano
Messaggi: 381


Allora...qua ho separato in due immagini il canale rgb e il canale alpha della normal map
Questo e' il canale RGB:
Questo e' il canale alpha:

Scusa la formattazione orrenda del post...

Comunque come puoi notare su ogni oggettino idiota (e' solo una mappa di test) che deve risaltare c'e' un diverso grado di opacita'.

Per esempio il "cono tronco" e' coperto da grado di opacita' 60%

In questo modo io che ho 6 comodissimi slider posso decidere di aumentare il bump del solo cono in questa maniera (il cubo ha di default una bump di un muro....in piu' come vedi appare il cono tronco)

Fumereo è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2007, 23:24   #7
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Non capisco niente di quello che stai facendo

Non capisco il nesso tra zone e alpha channel.
Quote:
Potendo al massimo gestire 6 "zone" ho separato i valori di alpha a 0, 20, 40, 60, 80 e 100 % di opacita'.
Ma tu non vuoi semplicemente dire quanto thick è la normal in quel punto? Non ti basta usare una bump map?
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2007, 23:27   #8
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
ah, FORSE ho capito, comunque tu riposta la spiegazione in modalità "scuola elementare" per favore
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2007, 15:37   #9
Fumereo
Senior Member
 
L'Avatar di Fumereo
 
Iscritto dal: Nov 2002
Città: Ivrea-Milano
Messaggi: 381
okok...intanto grazie per l'interessamento

Immaginiamo di avere una superficie piatta alla quale applichiamo una normal map.

Su questa normal map abbiamo disegnato un rombo e un quadrato. distanti tra di loro (non sovrapposti).

Ora nel piu' classico degli shaders che gestisce una normal map io posso aumentare un peso per variare il grado di rilievo con il quale queste due figure appariranno sulla superficie piatta. se il valore e' 0 non c'e' rilievo se il valore e' 1 il rilievo e' massimo. (semplifichiamo per comodita' d'esempio)

Nel mio shader e' possibile invece usare due pesi. Con uno gestisco il rombo, con l'altro il quadrato. Quindi posso far apparire il rombo sulla superficie e non il quadrato e viceversa o tutti e due con pesi indipendenti tra loro.

Ripeto che il quadrato e il rombo sono sulla stessa normal map. Quindi lo shader deve poter dividere la normal map per agire in maniera diversa a seconda della "zona". La maniera, poco efficiente, che ho sviluppato per adesso e' disegnare sull'alpha channel diversi gradi di opacita'.

In corrispondenza del rombo l'opacita' e' 0% (trasparente) mentre in corrispondenza del quadrato l'opacita' e' del 100%.

Lo shader leggera' il valore dell'alpha.... (if mappa.alpha == 0) USA il pesoA, altrimenti usa il pesoB.

PesoA e pesoB sono i valori con cui decido se e di quanto bumpare.

E' vagamente piu' chiaro?
Fumereo è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2007, 16:59   #10
CICUS
Senior Member
 
L'Avatar di CICUS
 
Iscritto dal: May 2004
Città: Torino
Messaggi: 1715
scusa se mi intrometto...sono un programmatore ma non grafico

ma stai usando del codice c#?
CICUS è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2007, 18:41   #11
Fumereo
Senior Member
 
L'Avatar di Fumereo
 
Iscritto dal: Nov 2002
Città: Ivrea-Milano
Messaggi: 381
Sto usando hlsl che e' molto simile al C
Fumereo è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2007, 19:37   #12
CICUS
Senior Member
 
L'Avatar di CICUS
 
Iscritto dal: May 2004
Città: Torino
Messaggi: 1715
mi era venuto in mente c# siccome anche li si possono usare le librerie directx
CICUS è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2007, 19:37   #13
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
usare più texture è improponibile? Io terrei ogni shape in una texture diversa onestamente...
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2007, 19:43   #14
Fumereo
Senior Member
 
L'Avatar di Fumereo
 
Iscritto dal: Nov 2002
Città: Ivrea-Milano
Messaggi: 381
Quote:
Originariamente inviato da CICUS
mi era venuto in mente c# siccome anche li si possono usare le librerie directx
Si ma qua non sto usando librerie directX. Sto creando un piccolo programma che gira proprio sulla scheda video (shader). La scelta quindi e' o l'assembler o un linguaggio proprietario di nvidia (Cg) o Hlsl oppure Glsl(opensource)...e chi ne sa di piu' mi corregga se sbaglio
Fumereo è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2007, 19:51   #15
Fumereo
Senior Member
 
L'Avatar di Fumereo
 
Iscritto dal: Nov 2002
Città: Ivrea-Milano
Messaggi: 381
Quote:
Originariamente inviato da Ufo13
usare più texture è improponibile? Io terrei ogni shape in una texture diversa onestamente...
Diventa improponibile ai fini di quello che sto cercando di realizzare....

Le applicazioni in seguito sarebbero molteplici....per esempio usando una stress map come "texture dei pesi" potrei andare a definire in tempo reale il bump di un modello in un determinato punto.

Ad esempio portando questo shader in maya potrei fare in modo di ottenere la variazione dinamica di bump in relazione alla distensione o alla contrazione poligonale del modello. Quindi se il mio modello strizza l'occhio appaiono delle rughe in corrispondenza delle zampe di gallina .....

Insomma potrebbero esserci degli sviluppi interessanti......
Fumereo è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2007, 20:06   #16
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Anche questa è una cosa che può benissimo essere fatta con qualche texture in più secondo me... Ogni texture ha associata una costante che dice la "profondità". Onestamente però non conosco il prezzo di un texture fetch rispetto a un IF-ELSe.. Io credo sia minore ma vedi tu.

IF e ELSE sarebbe meglio non usarli ma dipende sempre da cosa ti serve. Comunque ora sto un po' scoppiato, magari quando mi riprendo vedo di pensare a un'altra soluzione
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
Scoperta al CERN una particella mai vist...
Stampante HP a 37,99€: Wi-Fi, scanner e ...
OPPO annuncia l'arrivo in Italia della A...
La Russia presenta le CPU Irtysh per dat...
NVIDIA RTX PRO 4500 Server Edition: la s...
Core Ultra 200 HX Plus: Intel mette il t...
Starfield arriva su PS5: data ufficiale,...
iPad Air 13" (M4) scende di prezzo: -100...
Oracle annuncia Java 26 con il Java Veri...
OPPO Find N6 è ufficiale: sottile...
Influencer sotto controllo Agcom: arriva...
Scontro in OpenAI sul ChatGPT per adulti...
Apple Watch Series 11 a 349€ e altri int...
Starlink rinnova i piani residenziali in...
POCO X8 Pro e Pro Max ufficiali: potenza...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:11.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v