Examples-Advanced.material
上传用户:xhbjoy
上传日期:2014-10-07
资源大小:38068k
文件大小:28k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // -------------------------------
  2. // Cel Shading Section
  3. // -------------------------------
  4. vertex_program Ogre/CelShadingVP cg
  5. {
  6. source Example_CelShading.cg
  7. entry_point main_vp
  8. profiles vs_1_1 arbvp1
  9. default_params
  10. {
  11. param_named_auto lightPosition light_position_object_space 0
  12. param_named_auto eyePosition camera_position_object_space
  13. param_named_auto worldViewProj worldviewproj_matrix
  14. param_named shininess float 10 
  15. }
  16. }
  17. fragment_program Ogre/CelShadingFP cg
  18. {
  19. source Example_CelShading.cg
  20. entry_point main_fp
  21. profiles ps_1_1 arbfp1 fp20
  22. }
  23. material Examples/CelShading
  24. {
  25. technique
  26. {
  27. pass
  28. {
  29. vertex_program_ref Ogre/CelShadingVP
  30. {
  31. // map shininess from custom renderable param 1
  32. param_named_auto shininess custom 1
  33. }
  34. fragment_program_ref Ogre/CelShadingFP
  35. {
  36. // map diffuse from custom renderable param 2
  37. param_named_auto diffuse custom 2
  38. // map specular from custom renderable param 2
  39. param_named_auto specular custom 3
  40. }
  41. texture_unit
  42. {
  43. texture cel_shading_diffuse.png 1d
  44. tex_address_mode clamp
  45. filtering none
  46. }
  47. texture_unit
  48. {
  49. texture cel_shading_specular.png 1d
  50. tex_address_mode clamp
  51. filtering none
  52. tex_coord_set 1
  53. }
  54. texture_unit
  55. {
  56. texture cel_shading_edge.png 1d
  57. tex_address_mode clamp
  58. filtering none
  59. tex_coord_set 2
  60. }
  61. }
  62. }
  63. }
  64. //------------------------
  65. // Bump mapping section
  66. //------------------------
  67. // Bump map vertex program, support for this is required
  68. vertex_program Examples/BumpMapVP cg
  69. {
  70. source Example_BumpMapping.cg
  71. entry_point main_vp
  72. profiles vs_1_1 arbvp1
  73. }
  74. // Bump map fragment program, support for this is optional
  75. fragment_program Examples/BumpMapFP cg
  76. {
  77. source Example_BumpMapping.cg
  78. entry_point main_fp
  79. profiles ps_1_1 arbfp1 fp20
  80. }
  81. // Bump map vertex program shadow receiver
  82. vertex_program Examples/BumpMapVPShadowRcv cg
  83. {
  84. source Example_BumpMapping.cg
  85. entry_point main_shadowreceiver_vp
  86. profiles vs_1_1 arbvp1
  87. }
  88. // Bump map fragment program shadow receiver, support for this is optional
  89. fragment_program Examples/BumpMapFPShadowRcv cg
  90. {
  91. source Example_BumpMapping.cg
  92. entry_point main_shadowreceiver_fp
  93. profiles ps_1_1 arbfp1 fp20
  94. }
  95. // Bump map with specular vertex program, support for this is required
  96. vertex_program Examples/BumpMapVPSpecular cg
  97. {
  98. source Example_BumpMapping.cg
  99. entry_point specular_vp
  100. profiles vs_1_1 arbvp1
  101. }
  102. // Bump map fragment program, support for this is optional
  103. fragment_program Examples/BumpMapFPSpecular cg
  104. {
  105. source Example_BumpMapping.cg
  106. entry_point specular_fp
  107. profiles ps_1_1 arbfp1 fp20
  108. }
  109. // Single light material, less passes (one pass on a 4-unit card)
  110. material Examples/BumpMapping/SingleLight
  111. {
  112. // Preferred technique, uses vertex and fragment programs
  113. // to support a single coloured light
  114. technique
  115. {
  116. pass
  117. {
  118. // base colours, not needed for rendering, but as information
  119. // to lighting pass categorisation routine
  120. ambient 0 0 0 
  121. // Vertex program reference
  122. vertex_program_ref Examples/BumpMapVP
  123. {
  124. param_named_auto lightPosition light_position_object_space 0
  125. param_named_auto worldViewProj worldviewproj_matrix
  126. }
  127. // Fragment program
  128. fragment_program_ref Examples/BumpMapFP
  129. {
  130. param_named_auto lightDiffuse light_diffuse_colour 0 
  131. }
  132. // Base bump map
  133. texture_unit
  134. {
  135. texture NMBumpsOut.png
  136. colour_op replace
  137. }
  138. // Normalisation cube map
  139. texture_unit
  140. {
  141. cubic_texture nm.png combinedUVW
  142. tex_coord_set 1
  143. tex_address_mode clamp
  144. }
  145. // Decal
  146. texture_unit
  147. {
  148. texture RustySteel.jpg
  149. }
  150. }
  151. }
  152. // Fallback technique, uses vertex program but only fixed-function
  153. // fragment shading, which does not support coloured light
  154. technique
  155. {
  156. pass
  157. {
  158. // base colours, not needed for rendering, but as information
  159. // to lighting pass categorisation routine
  160. ambient 0 0 0 
  161. // Vertex program reference
  162. vertex_program_ref Examples/BumpMapVP
  163. {
  164. param_named_auto lightPosition light_position_object_space 0
  165. param_named_auto worldViewProj worldviewproj_matrix
  166. }
  167. // Base bump map
  168. texture_unit
  169. {
  170. texture NMBumpsOut.png
  171. colour_op replace
  172. }
  173. // Normalisation cube map
  174. texture_unit
  175. {
  176. cubic_texture nm.png combinedUVW
  177. tex_coord_set 1
  178. tex_address_mode clamp
  179. colour_op_ex dotproduct src_texture src_current
  180. colour_op_multipass_fallback dest_colour zero
  181. }
  182. // Decal
  183. texture_unit
  184. {
  185. texture RustySteel.jpg
  186. }
  187. }
  188. }
  189. }
  190. // Any number of lights, diffuse
  191. material Examples/BumpMapping/MultiLight
  192. {
  193. // This is the preferred technique which uses both vertex and
  194. // fragment programs, supports coloured lights
  195. technique
  196. {
  197. // Base ambient pass
  198. pass
  199. {
  200. // base colours, not needed for rendering, but as information
  201. // to lighting pass categorisation routine
  202. ambient 1 1 1
  203. diffuse 0 0 0 
  204. specular 0 0 0 0 
  205. // Really basic vertex program
  206. // NB we don't use fixed function here because GL does not like
  207. // mixing fixed function and vertex programs, depth fighting can
  208. // be an issue
  209. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  210. {
  211. param_named_auto worldViewProj worldviewproj_matrix
  212. param_named_auto ambient ambient_light_colour
  213. }
  214. }
  215. // Now do the lighting pass
  216. // NB we don't do decal texture here because this is repeated per light
  217. pass
  218. {
  219. // base colours, not needed for rendering, but as information
  220. // to lighting pass categorisation routine
  221. ambient 0 0 0 
  222. // do this for each light
  223. iteration once_per_light
  224. scene_blend add
  225. // Vertex program reference
  226. vertex_program_ref Examples/BumpMapVP
  227. {
  228. param_named_auto lightPosition light_position_object_space 0
  229. param_named_auto worldViewProj worldviewproj_matrix
  230. }
  231. // Fragment program
  232. fragment_program_ref Examples/BumpMapFP
  233. {
  234. param_named_auto lightDiffuse light_diffuse_colour 0 
  235. }
  236. // Base bump map
  237. texture_unit
  238. {
  239. texture NMBumpsOut.png
  240. colour_op replace
  241. }
  242. // Normalisation cube map
  243. texture_unit
  244. {
  245. cubic_texture nm.png combinedUVW
  246. tex_coord_set 1
  247. tex_address_mode clamp
  248. }
  249. }
  250. // Decal pass
  251. pass
  252. {
  253. // base colours, not needed for rendering, but as information
  254. // to lighting pass categorisation routine
  255. lighting off
  256. // Really basic vertex program
  257. // NB we don't use fixed function here because GL does not like
  258. // mixing fixed function and vertex programs, depth fighting can
  259. // be an issue
  260. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  261. {
  262. param_named_auto worldViewProj worldviewproj_matrix
  263. param_named ambient float4 1 1 1 1
  264. }
  265. scene_blend dest_colour zero
  266. texture_unit
  267. {
  268. texture RustedMetal.jpg 
  269. }
  270. }
  271. }
  272. // This is the fallback which cards which don't have fragment program 
  273. // support will use
  274. // Note that it still requires vertex program support
  275. technique
  276. {
  277. // Base ambient pass
  278. pass
  279. {
  280. // base colours, not needed for rendering, but as information
  281. // to lighting pass categorisation routine
  282. ambient 1 1 1
  283. diffuse 0 0 0 
  284. specular 0 0 0 0
  285. // Really basic vertex program
  286. // NB we don't use fixed function here because GL does not like
  287. // mixing fixed function and vertex programs, depth fighting can
  288. // be an issue
  289. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  290. {
  291. param_named_auto worldViewProj worldviewproj_matrix
  292. param_named_auto ambient ambient_light_colour
  293. }
  294. }
  295. // Now do the lighting pass
  296. // NB we don't do decal texture here because this is repeated per light
  297. pass
  298. {
  299. // base colours, not needed for rendering, but as information
  300. // to lighting pass categorisation routine
  301. ambient 0 0 0 
  302. // do this for each light
  303. iteration once_per_light
  304. scene_blend add
  305. // Vertex program reference
  306. vertex_program_ref Examples/BumpMapVP
  307. {
  308. param_named_auto lightPosition light_position_object_space 0
  309. param_named_auto worldViewProj worldviewproj_matrix
  310. }
  311. // Base bump map
  312. texture_unit
  313. {
  314. texture NMBumpsOut.png
  315. colour_op replace
  316. }
  317. // Normalisation cube map, with dot product on bump map
  318. texture_unit
  319. {
  320. cubic_texture nm.png combinedUVW
  321. tex_coord_set 1
  322. tex_address_mode clamp
  323. colour_op_ex dotproduct src_texture src_current
  324. colour_op_multipass_fallback dest_colour zero
  325. }
  326. }
  327. // Decal pass
  328. pass
  329. {
  330. lighting off
  331. // Really basic vertex program
  332. // NB we don't use fixed function here because GL does not like
  333. // mixing fixed function and vertex programs, depth fighting can
  334. // be an issue
  335. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  336. {
  337. param_named_auto worldViewProj worldviewproj_matrix
  338. param_named ambient float4 1 1 1 1
  339. }
  340. scene_blend dest_colour zero
  341. texture_unit
  342. {
  343. texture RustedMetal.jpg 
  344. }
  345. }
  346. }
  347. }
  348. // Any number of lights, diffuse and specular
  349. material Examples/BumpMapping/MultiLightSpecular
  350. {
  351. // This is the preferred technique which uses both vertex and
  352. // fragment programs, supports coloured lights
  353. technique
  354. {
  355. // Base ambient pass
  356. pass
  357. {
  358. // base colours, not needed for rendering, but as information
  359. // to lighting pass categorisation routine
  360. ambient 1 1 1
  361. diffuse 0 0 0 
  362. specular 0 0 0 0
  363. // Really basic vertex program
  364. // NB we don't use fixed function here because GL does not like
  365. // mixing fixed function and vertex programs, depth fighting can
  366. // be an issue
  367. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  368. {
  369. param_named_auto worldViewProj worldviewproj_matrix
  370. param_named_auto ambient ambient_light_colour
  371. }
  372. }
  373. // Now do the lighting pass
  374. // NB we don't do decal texture here because this is repeated per light
  375. pass
  376. {
  377. // base colours, not needed for rendering, but as information
  378. // to lighting pass categorisation routine
  379. ambient 0 0 0 
  380. // do this for each light
  381. iteration once_per_light
  382. scene_blend add
  383. // Vertex program reference
  384. vertex_program_ref Examples/BumpMapVPSpecular
  385. {
  386. param_named_auto lightPosition light_position_object_space 0
  387. param_named_auto eyePosition camera_position_object_space
  388. param_named_auto worldViewProj worldviewproj_matrix
  389. }
  390. // Fragment program
  391. fragment_program_ref Examples/BumpMapFPSpecular
  392. {
  393. param_named_auto lightDiffuse light_diffuse_colour 0 
  394. param_named_auto lightSpecular light_specular_colour 0
  395. }
  396. // Base bump map
  397. texture_unit
  398. {
  399. texture NMBumpsOut.png
  400. colour_op replace
  401. }
  402. // Normalisation cube map
  403. texture_unit
  404. {
  405. cubic_texture nm.png combinedUVW
  406. tex_coord_set 1
  407. tex_address_mode clamp
  408. }
  409. // Normalisation cube map #2
  410. texture_unit
  411. {
  412. cubic_texture nm.png combinedUVW
  413. tex_coord_set 2
  414. tex_address_mode clamp
  415. }
  416. }
  417. // Decal pass
  418. pass
  419. {
  420. lighting off
  421. // Really basic vertex program
  422. // NB we don't use fixed function here because GL does not like
  423. // mixing fixed function and vertex programs, depth fighting can
  424. // be an issue
  425. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  426. {
  427. param_named_auto worldViewProj worldviewproj_matrix
  428. param_named ambient float4 1 1 1 1
  429. }
  430. scene_blend dest_colour zero
  431. texture_unit
  432. {
  433. texture RustedMetal.jpg 
  434. }
  435. }
  436. }
  437. // This is the fallback which cards which don't have fragment program 
  438. // support will use, NB does not support specular colour
  439. // Note that it still requires vertex program support
  440. technique
  441. {
  442. // Base ambient pass
  443. pass
  444. {
  445. // base colours, not needed for rendering, but as information
  446. // to lighting pass categorisation routine
  447. ambient 1 1 1
  448. diffuse 0 0 0 
  449. specular 0 0 0 0
  450. // Really basic vertex program
  451. // NB we don't use fixed function here because GL does not like
  452. // mixing fixed function and vertex programs, depth fighting can
  453. // be an issue
  454. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  455. {
  456. param_named_auto worldViewProj worldviewproj_matrix
  457. param_named_auto ambient ambient_light_colour
  458. }
  459. }
  460. // Now do the lighting pass
  461. // NB we don't do decal texture here because this is repeated per light
  462. pass
  463. {
  464. // base colours, not needed for rendering, but as information
  465. // to lighting pass categorisation routine
  466. ambient 0 0 0 
  467. // do this for each light
  468. iteration once_per_light
  469. scene_blend add
  470. // Vertex program reference
  471. vertex_program_ref Examples/BumpMapVP
  472. {
  473. param_named_auto lightPosition light_position_object_space 0
  474. param_named_auto worldViewProj worldviewproj_matrix
  475. }
  476. // Base bump map
  477. texture_unit
  478. {
  479. texture NMBumpsOut.png
  480. colour_op replace
  481. }
  482. // Normalisation cube map, with dot product on bump map
  483. texture_unit
  484. {
  485. cubic_texture nm.png combinedUVW
  486. tex_coord_set 1
  487. tex_address_mode clamp
  488. colour_op_ex dotproduct src_texture src_current
  489. colour_op_multipass_fallback dest_colour zero
  490. }
  491. }
  492. // Decal pass
  493. pass
  494. {
  495. lighting off
  496. // Really basic vertex program
  497. // NB we don't use fixed function here because GL does not like
  498. // mixing fixed function and vertex programs, depth fighting can
  499. // be an issue
  500. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  501. {
  502. param_named_auto worldViewProj worldviewproj_matrix
  503. param_named ambient float4 1 1 1 1
  504. }
  505. scene_blend dest_colour zero
  506. texture_unit
  507. {
  508. texture RustedMetal.jpg 
  509. }
  510. }
  511. }
  512. }
  513. //---------------------------
  514. // Projective texture section
  515. //---------------------------
  516. vertex_program Examples/TexProjectionVP cg
  517. {
  518. source Example_Projection.cg
  519. entry_point generalPurposeProjection_vp
  520. profiles vs_1_1 arbvp1
  521. }
  522. fragment_program Examples/TexProjectionFP cg
  523. {
  524. source Example_Projection.cg
  525. entry_point generalPurposeProjection_fp
  526. // sorry, ps_1_1 can't do this, fp20 can though
  527. profiles ps_2_0 arbfp1 fp20
  528. }
  529. material Examples/GeneralTexProjection
  530. {
  531. technique
  532. {
  533. pass 
  534. {
  535. vertex_program_ref Examples/TexProjectionVP
  536. {
  537. param_named_auto worldViewProjMatrix worldviewproj_matrix
  538. param_named_auto worldMatrix world_matrix
  539. // You'll need to update the tex projection, I suggest using
  540. // the Frustum class
  541. //param_named_auto texWorldViewProj worldviewproj_matrix
  542. }
  543. fragment_program_ref Examples/TexProjectionFP
  544. {
  545. // no params
  546. }
  547. texture_unit
  548. {
  549. // Project the OGRE logo
  550. texture ogrelogo.png
  551. tex_address_mode clamp
  552. }
  553. }
  554. }
  555.     
  556. }
  557. //----------------------------
  558. // Distortion effects
  559. //----------------------------
  560. vertex_program Examples/FresnelRefractReflectVP cg
  561. {
  562. source Example_Fresnel.cg
  563. entry_point main_vp
  564. profiles vs_1_1 arbvp1
  565. }
  566. fragment_program Examples/FresnelRefractReflectFP cg
  567. {
  568. source Example_Fresnel.cg
  569. entry_point main_fp
  570. // sorry, ps_1_1 and fp20 can't do this
  571. profiles ps_2_0 arbfp1
  572. }
  573. fragment_program Examples/FresnelRefractReflectPS asm
  574. {
  575. source Example_FresnelPS.asm
  576. // sorry, only for ps_1_4 :)
  577. syntax ps_1_4
  578. }
  579. material Examples/FresnelReflectionRefraction
  580. {
  581. // ps_2_0 / arbfp1
  582. technique
  583. {
  584. pass 
  585. {
  586. vertex_program_ref Examples/FresnelRefractReflectVP
  587. {
  588. param_named_auto worldViewProjMatrix worldviewproj_matrix
  589. param_named_auto eyePosition camera_position_object_space
  590. param_named fresnelBias float -0.3 
  591. param_named fresnelScale float 1.4 
  592. param_named fresnelPower float 8  
  593. param_named_auto timeVal time_0_1 20
  594. param_named scroll float 1  
  595. param_named scale float 4 
  596. param_named noise float 1 
  597. // scroll and noisePos will need updating per frame
  598. }
  599. fragment_program_ref Examples/FresnelRefractReflectFP
  600. {
  601. param_named distortionRange float 0.025 
  602. param_named tintColour float4 0 0 0 1
  603. }
  604. // Noise
  605. texture_unit
  606. {
  607. // Perlin noise volume
  608. texture perlinvolume.dds 3d
  609. // min / mag filtering, no mip
  610. filtering linear linear none
  611. }
  612. // Reflection
  613. texture_unit
  614. {
  615. // Will be filled in at runtime
  616. texture Reflection
  617. tex_address_mode clamp
  618. // needed by ps.1.4
  619. tex_coord_set 1
  620. }
  621. // Refraction
  622. texture_unit
  623. {
  624. // Will be filled in at runtime
  625. texture Refraction
  626. tex_address_mode clamp
  627. // needed by ps.1.4
  628. tex_coord_set 2
  629. }
  630. }
  631. }
  632. // ATI 8500 +
  633. technique
  634. {
  635. pass
  636. {
  637. vertex_program_ref Examples/FresnelRefractReflectVP
  638. {
  639. param_named_auto worldViewProjMatrix worldviewproj_matrix
  640. param_named_auto eyePosition camera_position_object_space
  641. param_named fresnelBias float -0.3
  642. param_named fresnelScale float 1.4
  643. param_named fresnelPower float 8
  644. param_named_auto timeVal time_0_1 20
  645. param_named scroll float 1 
  646. param_named scale float 4 
  647. param_named noise float 1
  648. // scroll and noisePos will need updating per frame
  649. }
  650. // for ATI RADEON 8500 - 9200
  651. fragment_program_ref Examples/FresnelRefractReflectPS
  652. {
  653. // distortionRange
  654. param_indexed 0  float 0.025  
  655. // tintColour
  656. param_indexed 1  float4 0.05 0.12 0.15 1
  657. }
  658. // Noise
  659. texture_unit
  660. {
  661. // Perlin noise volume
  662. texture perlinvolume.dds 3d
  663. // min / mag filtering, no mip
  664. filtering linear linear none
  665. }
  666. // Reflection
  667. texture_unit
  668. {
  669. // Will be filled in at runtime
  670. texture Reflection
  671. tex_address_mode clamp
  672. // needed by ps.1.4
  673. tex_coord_set 1
  674. }
  675. // Refraction
  676. texture_unit
  677. {
  678. // Will be filled in at runtime
  679. texture Refraction
  680. tex_address_mode clamp
  681. // needed by ps.1.4
  682. tex_coord_set 2
  683. }
  684. }
  685. }    
  686. }
  687. // Normal-mapped Athene statue
  688. material Examples/Athene/NormalMapped
  689. {
  690. // This is the preferred technique which uses both vertex and
  691. // fragment programs, supports coloured lights
  692. technique
  693. {
  694. // Base ambient pass
  695. pass
  696. {
  697. // base colours, not needed for rendering, but as information
  698. // to lighting pass categorisation routine
  699. ambient 1 1 1
  700. diffuse 0 0 0 
  701. specular 0 0 0 0 
  702. // Really basic vertex program
  703. // NB we don't use fixed function here because GL does not like
  704. // mixing fixed function and vertex programs, depth fighting can
  705. // be an issue
  706. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  707. {
  708. param_named_auto worldViewProj worldviewproj_matrix
  709. param_named_auto ambient ambient_light_colour
  710. }
  711. }
  712. // Now do the lighting pass
  713. // NB we don't do decal texture here because this is repeated per light
  714. pass
  715. {
  716. // base colours, not needed for rendering, but as information
  717. // to lighting pass categorisation routine
  718. ambient 0 0 0 
  719. // do this for each light
  720. iteration once_per_light
  721. scene_blend add
  722. // Vertex program reference
  723. vertex_program_ref Examples/BumpMapVP
  724. {
  725. param_named_auto lightPosition light_position_object_space 0
  726. param_named_auto worldViewProj worldviewproj_matrix
  727. }
  728. // Fragment program
  729. fragment_program_ref Examples/BumpMapFP
  730. {
  731. param_named_auto lightDiffuse light_diffuse_colour 0 
  732. }
  733. // texture shadow receiver program
  734. shadow_receiver_vertex_program_ref Examples/BumpMapVPShadowRcv
  735. {
  736. param_named_auto lightPosition light_position_object_space 0
  737. param_named_auto worldViewProj worldviewproj_matrix
  738. param_named_auto worldMatrix world_matrix
  739. param_named_auto texViewProj texture_viewproj_matrix
  740. }
  741. // Additive texture shadow receiver program
  742. shadow_receiver_fragment_program_ref Examples/BumpMapFPShadowRcv
  743. {
  744. param_named_auto lightDiffuse light_diffuse_colour 0 
  745. }
  746. // Base bump map
  747. texture_unit
  748. {
  749. texture atheneNormalMap.png
  750. colour_op replace
  751. }
  752. // Normalisation cube map
  753. texture_unit
  754. {
  755. cubic_texture nm.png combinedUVW
  756. tex_coord_set 1
  757. tex_address_mode clamp
  758. }
  759. }
  760. // Decal pass
  761. pass
  762. {
  763. // base colours, not needed for rendering, but as information
  764. // to lighting pass categorisation routine
  765. lighting off
  766. // Really basic vertex program
  767. // NB we don't use fixed function here because GL does not like
  768. // mixing fixed function and vertex programs, depth fighting can
  769. // be an issue
  770. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  771. {
  772. param_named_auto worldViewProj worldviewproj_matrix
  773. param_named ambient float4 1 1 1 1
  774. }
  775. scene_blend dest_colour zero
  776. texture_unit
  777. {
  778. texture egyptrockyfull.jpg 
  779. }
  780. }
  781. }
  782. // This is the fallback which cards which don't have fragment program 
  783. // support will use
  784. // Note that it still requires vertex program support
  785. technique
  786. {
  787. // Base ambient pass
  788. pass
  789. {
  790. // base colours, not needed for rendering, but as information
  791. // to lighting pass categorisation routine
  792. ambient 1 1 1
  793. diffuse 0 0 0 
  794. specular 0 0 0 0
  795. // Really basic vertex program
  796. // NB we don't use fixed function here because GL does not like
  797. // mixing fixed function and vertex programs, depth fighting can
  798. // be an issue
  799. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  800. {
  801. param_named_auto worldViewProj worldviewproj_matrix
  802. param_named_auto ambient ambient_light_colour
  803. }
  804. }
  805. // Now do the lighting pass
  806. // NB we don't do decal texture here because this is repeated per light
  807. pass
  808. {
  809. // base colours, not needed for rendering, but as information
  810. // to lighting pass categorisation routine
  811. ambient 0 0 0 
  812. // do this for each light
  813. iteration once_per_light
  814. scene_blend add
  815. // Vertex program reference
  816. vertex_program_ref Examples/BumpMapVP
  817. {
  818. param_named_auto lightPosition light_position_object_space 0
  819. param_named_auto worldViewProj worldviewproj_matrix
  820. }
  821. // Base bump map
  822. texture_unit
  823. {
  824. texture atheneNormalMap.png
  825. colour_op replace
  826. }
  827. // Normalisation cube map, with dot product on bump map
  828. texture_unit
  829. {
  830. cubic_texture nm.png combinedUVW
  831. tex_coord_set 1
  832. tex_address_mode clamp
  833. colour_op_ex dotproduct src_texture src_current
  834. colour_op_multipass_fallback dest_colour zero
  835. }
  836. }
  837. // Decal pass
  838. pass
  839. {
  840. lighting off
  841. // Really basic vertex program
  842. // NB we don't use fixed function here because GL does not like
  843. // mixing fixed function and vertex programs, depth fighting can
  844. // be an issue
  845. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  846. {
  847. param_named_auto worldViewProj worldviewproj_matrix
  848. param_named ambient float4 1 1 1 1
  849. }
  850. scene_blend dest_colour zero
  851. texture_unit
  852. {
  853. texture egyptrockyfull.jpg
  854. }
  855. }
  856. }
  857. }
  858. // Basic Athene statue
  859. material Examples/Athene/Basic
  860. {
  861. technique
  862. {
  863. pass
  864. {
  865. ambient 0.3 0.3 0.3
  866. diffuse 1.0 1.0 0.9
  867. texture_unit
  868. {
  869. texture egyptrockyfull.jpg 
  870. }
  871. }
  872. }
  873. }
  874. // Any number of lights, diffuse and specular
  875. material Examples/Athene/NormalMappedSpecular
  876. {
  877. // This is the preferred technique which uses both vertex and
  878. // fragment programs, supports coloured lights
  879. technique
  880. {
  881. // Base ambient pass
  882. pass
  883. {
  884. // base colours, not needed for rendering, but as information
  885. // to lighting pass categorisation routine
  886. ambient 1 1 1
  887. diffuse 0 0 0 
  888. specular 0 0 0 0
  889. // Really basic vertex program
  890. // NB we don't use fixed function here because GL does not like
  891. // mixing fixed function and vertex programs, depth fighting can
  892. // be an issue
  893. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  894. {
  895. param_named_auto worldViewProj worldviewproj_matrix
  896. param_named_auto ambient ambient_light_colour
  897. }
  898. }
  899. // Now do the lighting pass
  900. // NB we don't do decal texture here because this is repeated per light
  901. pass
  902. {
  903. // base colours, not needed for rendering, but as information
  904. // to lighting pass categorisation routine
  905. ambient 0 0 0 
  906. // do this for each light
  907. iteration once_per_light
  908. scene_blend add
  909. // Vertex program reference
  910. vertex_program_ref Examples/BumpMapVPSpecular
  911. {
  912. param_named_auto lightPosition light_position_object_space 0
  913. param_named_auto eyePosition camera_position_object_space
  914. param_named_auto worldViewProj worldviewproj_matrix
  915. }
  916. // Fragment program
  917. fragment_program_ref Examples/BumpMapFPSpecular
  918. {
  919. param_named_auto lightDiffuse light_diffuse_colour 0 
  920. param_named_auto lightSpecular light_specular_colour 0
  921. }
  922. // Base bump map
  923. texture_unit
  924. {
  925. texture atheneNormalMap.png
  926. colour_op replace
  927. }
  928. // Normalisation cube map
  929. texture_unit
  930. {
  931. cubic_texture nm.png combinedUVW
  932. tex_coord_set 1
  933. tex_address_mode clamp
  934. }
  935. // Normalisation cube map #2
  936. texture_unit
  937. {
  938. cubic_texture nm.png combinedUVW
  939. tex_coord_set 2
  940. tex_address_mode clamp
  941. }
  942. }
  943. // Decal pass
  944. pass
  945. {
  946. lighting off
  947. // Really basic vertex program
  948. // NB we don't use fixed function here because GL does not like
  949. // mixing fixed function and vertex programs, depth fighting can
  950. // be an issue
  951. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  952. {
  953. param_named_auto worldViewProj worldviewproj_matrix
  954. param_named ambient float4 1 1 1 1
  955. }
  956. scene_blend dest_colour zero
  957. texture_unit
  958. {
  959. texture egyptrockyfull.jpg 
  960. }
  961. }
  962. }
  963. // This is the fallback which cards which don't have fragment program 
  964. // support will use, NB does not support specular colour
  965. // Note that it still requires vertex program support
  966. technique
  967. {
  968. // Base ambient pass
  969. pass
  970. {
  971. // base colours, not needed for rendering, but as information
  972. // to lighting pass categorisation routine
  973. ambient 1 1 1
  974. diffuse 0 0 0 
  975. specular 0 0 0 0
  976. // Really basic vertex program
  977. // NB we don't use fixed function here because GL does not like
  978. // mixing fixed function and vertex programs, depth fighting can
  979. // be an issue
  980. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  981. {
  982. param_named_auto worldViewProj worldviewproj_matrix
  983. param_named_auto ambient ambient_light_colour
  984. }
  985. }
  986. // Now do the lighting pass
  987. // NB we don't do decal texture here because this is repeated per light
  988. pass
  989. {
  990. // base colours, not needed for rendering, but as information
  991. // to lighting pass categorisation routine
  992. ambient 0 0 0 
  993. // do this for each light
  994. iteration once_per_light
  995. scene_blend add
  996. // Vertex program reference
  997. vertex_program_ref Examples/BumpMapVP
  998. {
  999. param_named_auto lightPosition light_position_object_space 0
  1000. param_named_auto worldViewProj worldviewproj_matrix
  1001. }
  1002. // Base bump map
  1003. texture_unit
  1004. {
  1005. texture atheneNormalMap.png
  1006. colour_op replace
  1007. }
  1008. // Normalisation cube map, with dot product on bump map
  1009. texture_unit
  1010. {
  1011. cubic_texture nm.png combinedUVW
  1012. tex_coord_set 1
  1013. tex_address_mode clamp
  1014. colour_op_ex dotproduct src_texture src_current
  1015. colour_op_multipass_fallback dest_colour zero
  1016. }
  1017. }
  1018. // Decal pass
  1019. pass
  1020. {
  1021. lighting off
  1022. // Really basic vertex program
  1023. // NB we don't use fixed function here because GL does not like
  1024. // mixing fixed function and vertex programs, depth fighting can
  1025. // be an issue
  1026. vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
  1027. {
  1028. param_named_auto worldViewProj worldviewproj_matrix
  1029. param_named ambient float4 1 1 1 1
  1030. }
  1031. scene_blend dest_colour zero
  1032. texture_unit
  1033. {
  1034. texture egyptrockyfull.jpg 
  1035. }
  1036. }
  1037. }
  1038. }