Added new volume rendering code

Change-Id: Iab0698fdc85265ca17d2b94d8826c2f81b2f40d1
Fixed texture state being dirty

Change-Id: I0ffd34627d22440732745e22b0f8934c67c91d0e
Use correct local bounds

Change-Id: I6275048fb3d4a47ac949305c600c84b88066ea80
Fixed rotation bug

Fixed bug where rotating the volume will offset volume
rendered image from its true location

Change-Id: I89100976f684f9961acad0b0a24ffb8d00123777
Fixed style

Change-Id: I2b6bbb58e23f42925ffcdfc5e69522eb2772225a
Fixed geometry beign missing after volume render

Change-Id: I62256e5d4b797be59812d50c56fce27718a95e30
Fixed indent

Change-Id: I7007687025b7475aa6b534e9d6877e9799a63dd7
Silenced cast warnings

Change-Id: I6200c639df27b3a8570049387701ed2d99b08bc6
Fixed style and naming conventions

Change-Id: Ibff64f1d0bfce646e9c35cf8530db960db2604ba
Added copyright

Change-Id: I9089bcc85f0dfc724d0077d08933f5b2741f274b
Embedded volume shaders into C++ units
Fixed broken volume rendering because of uninitialized variable

Since output frag color was un-initialized, it resulted in bad
final pixel value
Fixed code document style a bit
Added method to validate volume rendering
Enable sample distance control

Sample distance will enable users to set sample distance between
0 - inf
Enabled additive and composite blend mode
Use depth buffer to terminate ray
Fixed incorrect mix geometry and volume rendering