diff options
| -rw-r--r-- | indra/llrender/llshadermgr.h | 428 | ||||
| -rw-r--r-- | indra/llrender/llvertexbuffer.h | 43 | 
2 files changed, 238 insertions, 233 deletions
| diff --git a/indra/llrender/llshadermgr.h b/indra/llrender/llshadermgr.h index 127b5ce5b6..3908efd4ec 100644 --- a/indra/llrender/llshadermgr.h +++ b/indra/llrender/llshadermgr.h @@ -36,221 +36,223 @@ public:  	LLShaderMgr();  	virtual ~LLShaderMgr(); -	typedef enum -	{ -		MODELVIEW_MATRIX = 0, -		PROJECTION_MATRIX, -		INVERSE_PROJECTION_MATRIX, -		MODELVIEW_PROJECTION_MATRIX, -        INVERSE_MODELVIEW_MATRIX, -		NORMAL_MATRIX, -		TEXTURE_MATRIX0, -		TEXTURE_MATRIX1, -		TEXTURE_MATRIX2, -		TEXTURE_MATRIX3, -		OBJECT_PLANE_S, -		OBJECT_PLANE_T, -		VIEWPORT, -		LIGHT_POSITION, -		LIGHT_DIRECTION, -		LIGHT_ATTENUATION, -		LIGHT_DIFFUSE, -		LIGHT_AMBIENT, -		MULTI_LIGHT_COUNT, -		MULTI_LIGHT, -		MULTI_LIGHT_COL, -		MULTI_LIGHT_FAR_Z, -		PROJECTOR_MATRIX, -		PROJECTOR_NEAR, -		PROJECTOR_P, -		PROJECTOR_N, -		PROJECTOR_ORIGIN, -		PROJECTOR_RANGE, -		PROJECTOR_AMBIANCE, -		PROJECTOR_SHADOW_INDEX, -		PROJECTOR_SHADOW_FADE, -		PROJECTOR_FOCUS, -		PROJECTOR_LOD, -		PROJECTOR_AMBIENT_LOD, -		DIFFUSE_COLOR, -		DIFFUSE_MAP, -        ALTERNATE_DIFFUSE_MAP, -		SPECULAR_MAP, -		BUMP_MAP, -        BUMP_MAP2, -		ENVIRONMENT_MAP, -		CLOUD_NOISE_MAP, -        CLOUD_NOISE_MAP_NEXT, -		FULLBRIGHT, -		LIGHTNORM, -		SUNLIGHT_COLOR, -		AMBIENT, -		BLUE_HORIZON, -		BLUE_DENSITY, -		HAZE_HORIZON, -		HAZE_DENSITY, -		CLOUD_SHADOW, -		DENSITY_MULTIPLIER, -		DISTANCE_MULTIPLIER, -		MAX_Y, -		GLOW, -		CLOUD_COLOR, -		CLOUD_POS_DENSITY1, -		CLOUD_POS_DENSITY2, -		CLOUD_SCALE, -		GAMMA, -		SCENE_LIGHT_STRENGTH, -		LIGHT_CENTER, -		LIGHT_SIZE, -		LIGHT_FALLOFF, -		BOX_CENTER, -		BOX_SIZE, - -		GLOW_MIN_LUMINANCE, -		GLOW_MAX_EXTRACT_ALPHA, -		GLOW_LUM_WEIGHTS, -		GLOW_WARMTH_WEIGHTS, -		GLOW_WARMTH_AMOUNT, -		GLOW_STRENGTH, -		GLOW_DELTA, - -		MINIMUM_ALPHA, -		EMISSIVE_BRIGHTNESS, - -		DEFERRED_SHADOW_MATRIX, -		DEFERRED_ENV_MAT, -		DEFERRED_SHADOW_CLIP, -		DEFERRED_SUN_WASH, -		DEFERRED_SHADOW_NOISE, -		DEFERRED_BLUR_SIZE, -		DEFERRED_SSAO_RADIUS, -		DEFERRED_SSAO_MAX_RADIUS, -		DEFERRED_SSAO_FACTOR, -		DEFERRED_SSAO_FACTOR_INV, -		DEFERRED_SSAO_EFFECT_MAT, -		DEFERRED_SCREEN_RES, -		DEFERRED_NEAR_CLIP, -		DEFERRED_SHADOW_OFFSET, -		DEFERRED_SHADOW_BIAS, -		DEFERRED_SPOT_SHADOW_BIAS, -		DEFERRED_SPOT_SHADOW_OFFSET, -		DEFERRED_SUN_DIR, -        DEFERRED_MOON_DIR, -		DEFERRED_SHADOW_RES, -		DEFERRED_PROJ_SHADOW_RES, -		DEFERRED_DEPTH_CUTOFF, -		DEFERRED_NORM_CUTOFF, -		DEFERRED_SHADOW_TARGET_WIDTH, - -		FXAA_TC_SCALE, -		FXAA_RCP_SCREEN_RES, -		FXAA_RCP_FRAME_OPT, -		FXAA_RCP_FRAME_OPT2, - -		DOF_FOCAL_DISTANCE, -		DOF_BLUR_CONSTANT, -		DOF_TAN_PIXEL_ANGLE, -		DOF_MAGNIFICATION, -		DOF_MAX_COF, -		DOF_RES_SCALE, -		DOF_WIDTH, -		DOF_HEIGHT, - -		DEFERRED_DEPTH, -		DEFERRED_SHADOW0, -		DEFERRED_SHADOW1, -		DEFERRED_SHADOW2, -		DEFERRED_SHADOW3, -		DEFERRED_SHADOW4, -		DEFERRED_SHADOW5, -		DEFERRED_NORMAL, -		DEFERRED_POSITION, -		DEFERRED_DIFFUSE, -		DEFERRED_SPECULAR, -		DEFERRED_NOISE, -		DEFERRED_LIGHTFUNC, -		DEFERRED_LIGHT, -		DEFERRED_BLOOM, -		DEFERRED_PROJECTION, -		DEFERRED_NORM_MATRIX, -		TEXTURE_GAMMA,		 -		SPECULAR_COLOR, -		ENVIRONMENT_INTENSITY, -		 -		AVATAR_MATRIX, -		AVATAR_TRANSLATION, - -		WATER_SCREENTEX, -		WATER_SCREENDEPTH, -		WATER_REFTEX, -		WATER_EYEVEC, -		WATER_TIME, -		WATER_WAVE_DIR1, -		WATER_WAVE_DIR2, -		WATER_LIGHT_DIR, -		WATER_SPECULAR, -		WATER_SPECULAR_EXP, -		WATER_FOGCOLOR, -		WATER_FOGDENSITY, -		WATER_FOGKS, -		WATER_REFSCALE, -		WATER_WATERHEIGHT, -		WATER_WATERPLANE, -		WATER_NORM_SCALE, -		WATER_FRESNEL_SCALE, -		WATER_FRESNEL_OFFSET, -		WATER_BLUR_MULTIPLIER, -		WATER_SUN_ANGLE, -		WATER_SCALED_ANGLE, -		WATER_SUN_ANGLE2, -		 -		WL_CAMPOSLOCAL, - -		AVATAR_WIND, -		AVATAR_SINWAVE, -		AVATAR_GRAVITY, - -		TERRAIN_DETAIL0, -		TERRAIN_DETAIL1, -		TERRAIN_DETAIL2, -		TERRAIN_DETAIL3, -		TERRAIN_ALPHARAMP, -		 -		SHINY_ORIGIN, -        DISPLAY_GAMMA, - -        INSCATTER_RT, -        SUN_SIZE, -        FOG_COLOR, +    // clang-format off +    typedef enum +    {                                       // Shader uniform name, set in LLShaderMgr::initAttribsAndUniforms() +        MODELVIEW_MATRIX = 0,               //  "modelview_matrix" +        PROJECTION_MATRIX,                  //  "projection_matrix" +        INVERSE_PROJECTION_MATRIX,          //  "inv_proj" +        MODELVIEW_PROJECTION_MATRIX,        //  "modelview_projection_matrix" +        INVERSE_MODELVIEW_MATRIX,           //  "inv_modelview" +        NORMAL_MATRIX,                      //  "normal_matrix" +        TEXTURE_MATRIX0,                    //  "texture_matrix0" +        TEXTURE_MATRIX1,                    //  "texture_matrix1" +        TEXTURE_MATRIX2,                    //  "texture_matrix2" +        TEXTURE_MATRIX3,                    //  "texture_matrix3" +        OBJECT_PLANE_S,                     //  "object_plane_s" +        OBJECT_PLANE_T,                     //  "object_plane_t" +        VIEWPORT,                           //  "viewport" +        LIGHT_POSITION,                     //  "light_position" +        LIGHT_DIRECTION,                    //  "light_direction" +        LIGHT_ATTENUATION,                  //  "light_attenuation" +        LIGHT_DIFFUSE,                      //  "light_diffuse" +        LIGHT_AMBIENT,                      //  "light_ambient" +        MULTI_LIGHT_COUNT,                  //  "light_count" +        MULTI_LIGHT,                        //  "light" +        MULTI_LIGHT_COL,                    //  "light_col" +        MULTI_LIGHT_FAR_Z,                  //  "far_z" +        PROJECTOR_MATRIX,                   //  "proj_mat" +        PROJECTOR_NEAR,                     //  "proj_near" +        PROJECTOR_P,                        //  "proj_p" +        PROJECTOR_N,                        //  "proj_n" +        PROJECTOR_ORIGIN,                   //  "proj_origin" +        PROJECTOR_RANGE,                    //  "proj_range" +        PROJECTOR_AMBIANCE,                 //  "proj_ambiance" +        PROJECTOR_SHADOW_INDEX,             //  "proj_shadow_idx" +        PROJECTOR_SHADOW_FADE,              //  "shadow_fade" +        PROJECTOR_FOCUS,                    //  "proj_focus" +        PROJECTOR_LOD,                      //  "proj_lod" +        PROJECTOR_AMBIENT_LOD,              //  "proj_ambient_lod" +        DIFFUSE_COLOR,                      //  "color" +        DIFFUSE_MAP,                        //  "diffuseMap" +        ALTERNATE_DIFFUSE_MAP,              //  "altDiffuseMap" +        SPECULAR_MAP,                       //  "specularMap" +        BUMP_MAP,                           //  "bumpMap" +        BUMP_MAP2,                          //  "bumpMap2" +        ENVIRONMENT_MAP,                    //  "environmentMap" +        CLOUD_NOISE_MAP,                    //  "cloud_noise_texture" +        CLOUD_NOISE_MAP_NEXT,               //  "cloud_noise_texture_next" +        FULLBRIGHT,                         //  "fullbright" +        LIGHTNORM,                          //  "lightnorm" +        SUNLIGHT_COLOR,                     //  "sunlight_color" +        AMBIENT,                            //  "ambient_color" +        BLUE_HORIZON,                       //  "blue_horizon" +        BLUE_DENSITY,                       //  "blue_density" +        HAZE_HORIZON,                       //  "haze_horizon" +        HAZE_DENSITY,                       //  "haze_density" +        CLOUD_SHADOW,                       //  "cloud_shadow" +        DENSITY_MULTIPLIER,                 //  "density_multiplier" +        DISTANCE_MULTIPLIER,                //  "distance_multiplier" +        MAX_Y,                              //  "max_y" +        GLOW,                               //  "glow" +        CLOUD_COLOR,                        //  "cloud_color" +        CLOUD_POS_DENSITY1,                 //  "cloud_pos_density1" +        CLOUD_POS_DENSITY2,                 //  "cloud_pos_density2" +        CLOUD_SCALE,                        //  "cloud_scale" +        GAMMA,                              //  "gamma" +        SCENE_LIGHT_STRENGTH,               //  "scene_light_strength" +        LIGHT_CENTER,                       //  "center" +        LIGHT_SIZE,                         //  "size" +        LIGHT_FALLOFF,                      //  "falloff" +        BOX_CENTER,                         //  "box_center" +        BOX_SIZE,                           //  "box_size" + +        GLOW_MIN_LUMINANCE,                 //  "minLuminance" +        GLOW_MAX_EXTRACT_ALPHA,             //  "maxExtractAlpha" +        GLOW_LUM_WEIGHTS,                   //  "lumWeights" +        GLOW_WARMTH_WEIGHTS,                //  "warmthWeights" +        GLOW_WARMTH_AMOUNT,                 //  "warmthAmount" +        GLOW_STRENGTH,                      //  "glowStrength" +        GLOW_DELTA,                         //  "glowDelta" + +        MINIMUM_ALPHA,                      //  "minimum_alpha" +        EMISSIVE_BRIGHTNESS,                //  "emissive_brightness" + +        DEFERRED_SHADOW_MATRIX,             //  "shadow_matrix" +        DEFERRED_ENV_MAT,                   //  "env_mat" +        DEFERRED_SHADOW_CLIP,               //  "shadow_clip" +        DEFERRED_SUN_WASH,                  //  "sun_wash" +        DEFERRED_SHADOW_NOISE,              //  "shadow_noise" +        DEFERRED_BLUR_SIZE,                 //  "blur_size" +        DEFERRED_SSAO_RADIUS,               //  "ssao_radius" +        DEFERRED_SSAO_MAX_RADIUS,           //  "ssao_max_radius" +        DEFERRED_SSAO_FACTOR,               //  "ssao_factor" +        DEFERRED_SSAO_FACTOR_INV,           //  "ssao_factor_inv" +        DEFERRED_SSAO_EFFECT_MAT,           //  "ssao_effect_mat" +        DEFERRED_SCREEN_RES,                //  "screen_res" +        DEFERRED_NEAR_CLIP,                 //  "near_clip" +        DEFERRED_SHADOW_OFFSET,             //  "shadow_offset" +        DEFERRED_SHADOW_BIAS,               //  "shadow_bias" +        DEFERRED_SPOT_SHADOW_BIAS,          //  "spot_shadow_bias" +        DEFERRED_SPOT_SHADOW_OFFSET,        //  "spot_shadow_offset" +        DEFERRED_SUN_DIR,                   //  "sun_dir" +        DEFERRED_MOON_DIR,                  //  "moon_dir" +        DEFERRED_SHADOW_RES,                //  "shadow_res" +        DEFERRED_PROJ_SHADOW_RES,           //  "proj_shadow_res" +        DEFERRED_DEPTH_CUTOFF,              //  "depth_cutoff" +        DEFERRED_NORM_CUTOFF,               //  "norm_cutoff" +        DEFERRED_SHADOW_TARGET_WIDTH,       //  "shadow_target_width" + +        FXAA_TC_SCALE,                      //  "tc_scale" +        FXAA_RCP_SCREEN_RES,                //  "rcp_screen_res" +        FXAA_RCP_FRAME_OPT,                 //  "rcp_frame_opt" +        FXAA_RCP_FRAME_OPT2,                //  "rcp_frame_opt2" + +        DOF_FOCAL_DISTANCE,                 //  "focal_distance" +        DOF_BLUR_CONSTANT,                  //  "blur_constant" +        DOF_TAN_PIXEL_ANGLE,                //  "tan_pixel_angle" +        DOF_MAGNIFICATION,                  //  "magnification" +        DOF_MAX_COF,                        //  "max_cof" +        DOF_RES_SCALE,                      //  "res_scale" +        DOF_WIDTH,                          //  "dof_width" +        DOF_HEIGHT,                         //  "dof_height" + +        DEFERRED_DEPTH,                     //  "depthMap" +        DEFERRED_SHADOW0,                   //  "shadowMap0" +        DEFERRED_SHADOW1,                   //  "shadowMap1" +        DEFERRED_SHADOW2,                   //  "shadowMap2" +        DEFERRED_SHADOW3,                   //  "shadowMap3" +        DEFERRED_SHADOW4,                   //  "shadowMap4" +        DEFERRED_SHADOW5,                   //  "shadowMap5" +        DEFERRED_NORMAL,                    //  "normalMap" +        DEFERRED_POSITION,                  //  "positionMap" +        DEFERRED_DIFFUSE,                   //  "diffuseRect" +        DEFERRED_SPECULAR,                  //  "specularRect" +        DEFERRED_NOISE,                     //  "noiseMap" +        DEFERRED_LIGHTFUNC,                 //  "lightFunc" +        DEFERRED_LIGHT,                     //  "lightMap" +        DEFERRED_BLOOM,                     //  "bloomMap" +        DEFERRED_PROJECTION,                //  "projectionMap" +        DEFERRED_NORM_MATRIX,               //  "norm_mat" +        TEXTURE_GAMMA,                      //  "texture_gamma" +        SPECULAR_COLOR,                     //  "specular_color" +        ENVIRONMENT_INTENSITY,              //  "env_intensity" + +        AVATAR_MATRIX,                      //  "matrixPalette" +        AVATAR_TRANSLATION,                 //  "translationPalette" + +        WATER_SCREENTEX,                    //  "screenTex" +        WATER_SCREENDEPTH,                  //  "screenDepth" +        WATER_REFTEX,                       //  "refTex" +        WATER_EYEVEC,                       //  "eyeVec" +        WATER_TIME,                         //  "time" +        WATER_WAVE_DIR1,                    //  "waveDir1" +        WATER_WAVE_DIR2,                    //  "waveDir2" +        WATER_LIGHT_DIR,                    //  "lightDir" +        WATER_SPECULAR,                     //  "specular" +        WATER_SPECULAR_EXP,                 //  "lightExp" +        WATER_FOGCOLOR,                     //  "waterFogColor" +        WATER_FOGDENSITY,                   //  "waterFogDensity" +        WATER_FOGKS,                        //  "waterFogKS" +        WATER_REFSCALE,                     //  "refScale" +        WATER_WATERHEIGHT,                  //  "waterHeight" +        WATER_WATERPLANE,                   //  "waterPlane" +        WATER_NORM_SCALE,                   //  "normScale" +        WATER_FRESNEL_SCALE,                //  "fresnelScale" +        WATER_FRESNEL_OFFSET,               //  "fresnelOffset" +        WATER_BLUR_MULTIPLIER,              //  "blurMultiplier" +        WATER_SUN_ANGLE,                    //  "sunAngle" +        WATER_SCALED_ANGLE,                 //  "scaledAngle" +        WATER_SUN_ANGLE2,                   //  "sunAngle2" + +        WL_CAMPOSLOCAL,                     //  "camPosLocal" + +        AVATAR_WIND,                        //  "gWindDir" +        AVATAR_SINWAVE,                     //  "gSinWaveParams" +        AVATAR_GRAVITY,                     //  "gGravity" + +        TERRAIN_DETAIL0,                    //  "detail_0" +        TERRAIN_DETAIL1,                    //  "detail_1" +        TERRAIN_DETAIL2,                    //  "detail_2" +        TERRAIN_DETAIL3,                    //  "detail_3" +        TERRAIN_ALPHARAMP,                  //  "alpha_ramp" + +        SHINY_ORIGIN,                       //  "origin" +        DISPLAY_GAMMA,                      //  "display_gamma" + +        INSCATTER_RT,                       //  "inscatter" +        SUN_SIZE,                           //  "sun_size" +        FOG_COLOR,                          //  "fog_color"          // precomputed textures -        TRANSMITTANCE_TEX, -        SCATTER_TEX, -        SINGLE_MIE_SCATTER_TEX, -        ILLUMINANCE_TEX, -        BLEND_FACTOR, - -        NO_ATMO, -        MOISTURE_LEVEL, -        DROPLET_RADIUS, -        ICE_LEVEL, -        RAINBOW_MAP, -        HALO_MAP, - -        MOON_BRIGHTNESS, - -        CLOUD_VARIANCE, - -        SH_INPUT_L1R, -        SH_INPUT_L1G, -        SH_INPUT_L1B, - -        SUN_MOON_GLOW_FACTOR, -        WATER_EDGE_FACTOR, -        SUN_UP_FACTOR, -        MOONLIGHT_COLOR, -		END_RESERVED_UNIFORMS -	} eGLSLReservedUniforms; +        TRANSMITTANCE_TEX,                  //  "transmittance_texture" +        SCATTER_TEX,                        //  "scattering_texture" +        SINGLE_MIE_SCATTER_TEX,             //  "single_mie_scattering_texture" +        ILLUMINANCE_TEX,                    //  "irradiance_texture" +        BLEND_FACTOR,                       //  "blend_factor" + +        NO_ATMO,                            //  "no_atmo" +        MOISTURE_LEVEL,                     //  "moisture_level" +        DROPLET_RADIUS,                     //  "droplet_radius" +        ICE_LEVEL,                          //  "ice_level" +        RAINBOW_MAP,                        //  "rainbow_map" +        HALO_MAP,                           //  "halo_map" + +        MOON_BRIGHTNESS,                    //  "moon_brightness" + +        CLOUD_VARIANCE,                     //  "cloud_variance" + +        SH_INPUT_L1R,                       //  "sh_input_r" +        SH_INPUT_L1G,                       //  "sh_input_g" +        SH_INPUT_L1B,                       //  "sh_input_b" + +        SUN_MOON_GLOW_FACTOR,               //  "sun_moon_glow_factor" +        WATER_EDGE_FACTOR,                  //  "water_edge" +        SUN_UP_FACTOR,                      //  "sun_up_factor" +        MOONLIGHT_COLOR,                    //  "moonlight_color" +        END_RESERVED_UNIFORMS +    } eGLSLReservedUniforms; +    // clang-format on  	// singleton pattern implementation  	static LLShaderMgr * instance(); diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h index 9867bd16d6..dbe1a3687f 100644 --- a/indra/llrender/llvertexbuffer.h +++ b/indra/llrender/llvertexbuffer.h @@ -155,9 +155,8 @@ public:  	//get the size of a buffer with the given typemask and vertex count  	//fill offsets with the offset of each vertex component array into the buffer  	// indexed by the following enum -	static S32 calcOffsets(const U32& typemask, S32* offsets, S32 num_vertices);		 +	static S32 calcOffsets(const U32& typemask, S32* offsets, S32 num_vertices); -	  	//WARNING -- when updating these enums you MUST   	// 1 - update LLVertexBuffer::sTypeSize  	// 2 - add a strider accessor @@ -165,24 +164,28 @@ public:  	// 4 - modify LLVertexBuffer::setupClientArray  	// 5 - modify LLViewerShaderMgr::mReservedAttribs  	// 6 - update LLVertexBuffer::setupVertexArray -	enum { -		TYPE_VERTEX = 0, -		TYPE_NORMAL, -		TYPE_TEXCOORD0, -		TYPE_TEXCOORD1, -		TYPE_TEXCOORD2, -		TYPE_TEXCOORD3, -		TYPE_COLOR, -		TYPE_EMISSIVE, -		TYPE_TANGENT, -		TYPE_WEIGHT, -		TYPE_WEIGHT4, -		TYPE_CLOTHWEIGHT, -		TYPE_TEXTURE_INDEX, -		TYPE_MAX,   // TYPE_MAX is the size/boundary marker for attributes that go in the vertex buffer -		TYPE_INDEX,	// TYPE_INDEX is beyond _MAX because it lives in a separate (index) buffer	 -	}; -	enum { + +    // clang-format off +    enum {                      // Shader attribute name, set in LLShaderMgr::initAttribsAndUniforms() +        TYPE_VERTEX = 0,        //  "position" +        TYPE_NORMAL,            //  "normal" +        TYPE_TEXCOORD0,         //  "texcoord0" +        TYPE_TEXCOORD1,         //  "texcoord1" +        TYPE_TEXCOORD2,         //  "texcoord2" +        TYPE_TEXCOORD3,         //  "texcoord3" +        TYPE_COLOR,             //  "diffuse_color" +        TYPE_EMISSIVE,          //  "emissive" +        TYPE_TANGENT,           //  "tangent" +        TYPE_WEIGHT,            //  "weight" +        TYPE_WEIGHT4,           //  "weight4" +        TYPE_CLOTHWEIGHT,       //  "clothing" +        TYPE_TEXTURE_INDEX,     //  "texture_index" +        TYPE_MAX,   // TYPE_MAX is the size/boundary marker for attributes that go in the vertex buffer +        TYPE_INDEX,	// TYPE_INDEX is beyond _MAX because it lives in a separate (index) buffer	 +    }; +    // clang-format on + +    enum {  		MAP_VERTEX = (1<<TYPE_VERTEX),  		MAP_NORMAL = (1<<TYPE_NORMAL),  		MAP_TEXCOORD0 = (1<<TYPE_TEXCOORD0), | 
