[ glorius @ 22.01.2006. 00:04 ] @
Najzad! Posle toliko cekanja nove graficke ( tj. celog kompa ) X800GT najzad mogu da koristim shadere ( doduse, ne SM 3.0 ali za sada je i ovo dovoljno). Poceo sam sa CG-om jer mi je on nekako "najcistiji". Naravno, tu dolaze i prvi problemi. Verovatno je neko radio one primere iz nVidijinog Toolkit-a ili neki Simple Lighting tutorial. Sta je u stvari eyePosition koji se koristi u light shaderima. Da li je to pozicija kamere, mada je u svim tutorijalima stavljaju kao konstantnu vrednost ( npr. (0, 0, 1) ) ( cak stave i da je (0, 0, 0) a u gluLookAt stave (0, 10, 30, ..... ) ). Cini mi se da nije target svetla posto bi ono trebalo da je Point light. Code: struct vertex { float4 position : POSITION; float4 normal : NORMAL; float4 color0 : COLOR0; }; struct fragment { float4 position : POSITION; float4 color0 : COLOR0; }; fragment main( vertex IN, uniform float4x4 modelViewProjection, uniform float4x4 modelViewInverse, uniform float4 eyePosition, uniform float4 lightVector ) { fragment OUT; OUT.position = mul( modelViewProjection, IN.position ); //OUT.position = mul( glstate.matrix.mvp, IN.position ); // Transform normal from model-space to view-space float4 normal = normalize( mul( modelViewInverse, IN.normal ).xyzz ); // Store normalized light vector float4 light = normalize( lightVector ); // Calculate half angle vector float4 eye = eyePosition; float4 half = normalize( light + eye ); // Calculate diffuse component float diffuse = dot( normal, light ); // Calculate specular component float specular = dot( normal, half ); specular = pow( specular, 32 ); // A little ambient color float4 ambientColor = float4( 0.2, 0.2, 0.2, 0.2 ); // White specular float4 specularMaterial = float4( 1.0, 0.0, 0.0, 1.0 ); // Combine diffuse and specular contributions and output final vertex color OUT.color0 = diffuse * IN.color0 + specular * specularMaterial + ambientColor; return OUT; } Takodje, ne razumem zbog cega se pozicija vertexa transformise sa ModelViewProjection matricom? Logicnije mi je (za sada) da to bude potrebno za Fragment shader. Oguglao sam po netu trazeci primere. Pored www.nVidia.com i www.cgshaders.com nisam nasao vise nikakve tutoriale koji bi mi pomogli da "svarim" ove pocetnicke stvari. Znate li jos neke linkove? |