plac 2 Опубликовано 5 Июня 2013 (изменено) Здравствуйте, вот какова моя проблема, не можете ли вы дать утилиту или программу для редактирования / распаковки шейдеров. ShaderEditor.exe из СДК, не? ColR_iT ColR_iT а чем либо ещё? Изменено 5 Июня 2013 пользователем plac Поделиться этим сообщением Ссылка на сообщение
plac 2 Опубликовано 29 Августа 2013 (изменено) Здравствуйте.Я добавил шейдеры by MacroN из билда 2218. (ТЧ)Убрал шейдер блеска (sload), включил отбеливание изображения (из тех же шейдеров, так же проведены собственные изменения) и альтернативную модель освещения.Проблема в том что вокруг актёра появился зелёный круг.Он заметен только при тумане. Так же я выявил что баг зависит от common.h (отбеливание изображения).Не могли бы вы подсказать как его исправить. #ifndef COMMON_H #define COMMON_H// #define USE_SUPER_SPECULAR#include "shared\common.h"//////////////////////////////////////////////////////////////////////////////////////////// *** options// #define USE_GAMMA_22// #define USE_SJITTER// #define USE_SUNFILTER//// #define USE_MBLUR //- HW-options defined// #define USE_HWSMAP //- HW-options defined// #define USE_HWSMAP_PCF //- nVidia GF3+, R600+// #define USE_BRANCHING //- HW-options defined// #define USE_VTF //- HW-options defined, VertexTextureFetch// #define FP16_FILTER //- HW-options defined// #define FP16_BLEND //- HW-options defined//// #define USE_PARALLAX //- shader defined// #define USE_TDETAIL //- shader defined// #define USE_LM_HEMI //- shader defined// #define USE_DISTORT //- shader defined#define USE_SUNMASK //- shader defined//#define DBG_TMAPPING//////////////////////////////////////////////////////////////////////////////////////////#ifndef SMAP_size#define SMAP_size 2048#endif#define PARALLAX_H 0.02#define parallax float2(PARALLAX_H, -PARALLAX_H/2)#ifdef USE_R2_STATIC_SUN# define xmaterial half(1.0h/4.h)#else# define xmaterial half(L_material.w)#endif//////////////////////////////////////////////////////////////////////////////////////////uniform half4 L_material; // 0,0,0,miduniform half4 Ldynamic_color; // dynamic light color (rgb1) - spot/pointuniform half4 Ldynamic_pos; // dynamic light pos+1/range(w) - spot/pointuniform half4 Ldynamic_dir; // dynamic light direction - sununiform half4 J_direct [6];uniform half4 J_spot [6];half calc_fogging (half4 w_pos) { return dot(w_pos,fog_plane); }half2 calc_detail (half3 w_pos) {float dtl = distance (w_pos,eye_position)*dt_params.w;dtl = min (dtl*dtl, 1);half dt_mul = 1 - dtl; // dt* [1 .. 0 ]half dt_add = .5 * dtl; // dt+ [0 .. 0.5]return half2 (dt_mul,dt_add);}float3 calc_reflection (float3 pos_w, float3 norm_w){return reflect(normalize(pos_w-eye_position), norm_w);}float3 calc_sun_r1 (float3 norm_w) { return L_sun_color*saturate(dot((norm_w),-L_sun_dir_w)); }float3 calc_model_hemi_r1 (float3 norm_w) { return max(0,norm_w.y)*L_hemi_color; }float3 calc_model_lq_lighting (float3 norm_w) { return L_material.x*calc_model_hemi_r1(norm_w) + L_ambient + L_material.y*calc_sun_r1(norm_w); }//////////////////////////////////////////////////////////////////////////////////////////struct v_static {float4 P : POSITION; // (float,float,float,1)float4 Nh : NORMAL; // (nx,ny,nz,hemi occlusion)float4 T : TANGENT; // tangentfloat4 B : BINORMAL; // binormalfloat2 tc : TEXCOORD0; // (u,v)float2 lmh : TEXCOORD1; // (lmu,lmv)float4 color : COLOR0; // (r,g,b,dir-occlusion)};struct v_tree {float4 P : POSITION; // (float,float,float,1)float4 Nh : NORMAL; // (nx,ny,nz)float3 T : TANGENT; // tangentfloat3 B : BINORMAL; // binormalfloat4 tc : TEXCOORD0; // (u,v,frac,???)};struct v_model {float4 P : POSITION; // (float,float,float,1)float3 N : NORMAL; // (nx,ny,nz)float3 T : TANGENT; // (nx,ny,nz)float3 B : BINORMAL; // (nx,ny,nz)float2 tc : TEXCOORD0; // (u,v)};struct v_detail {float4 pos : POSITION; // (float,float,float,1)int4 misc : TEXCOORD0; // (u(Q),v(Q),frac,matrix-id)};#ifdef USE_HWSMAPstruct v_shadow_direct_aref{float4 hpos: POSITION; // Clip-space position (for rasterization)float2 tc0: TEXCOORD1; // Diffuse map for aref};struct v_shadow_direct{float4 hpos: POSITION; // Clip-space position (for rasterization)};#elsestruct v_shadow_direct_aref{float4 hpos: POSITION; // Clip-space position (for rasterization)float depth: TEXCOORD0; // Depthfloat2 tc0: TEXCOORD1; // Diffuse map for aref};struct v_shadow_direct{float4 hpos: POSITION; // Clip-space position (for rasterization)float depth: TEXCOORD0; // Depth};#endif//////////////////////////////////////////////////////////////////////////////////////////struct p_bumped {float4 hpos : POSITION;#if defined(USE_R2_STATIC_SUN) && !defined(USE_LM_HEMI)float4 tcdh : TEXCOORD0; // Texture coordinates, w=sun_occlusion#elsefloat2 tcdh : TEXCOORD0; // Texture coordinates#endiffloat4 position : TEXCOORD1; // position + hemihalf3 M1 : TEXCOORD2; // nmap 2 eye - 1half3 M2 : TEXCOORD3; // nmap 2 eye - 2half3 M3 : TEXCOORD4; // nmap 2 eye - 3#ifdef USE_PARALLAXhalf3 eye : TEXCOORD5; // vector to point in tangent space#ifdef USE_TDETAILfloat2 tcdbump : TEXCOORD6; // d-bump#ifdef USE_LM_HEMIfloat2 lmh : TEXCOORD7; // lm-hemi#endif#else#ifdef USE_LM_HEMIfloat2 lmh : TEXCOORD6; // lm-hemi#endif#endif#else#ifdef USE_TDETAILfloat2 tcdbump : TEXCOORD5; // d-bump#ifdef USE_LM_HEMIfloat2 lmh : TEXCOORD6; // lm-hemi#endif#else#ifdef USE_LM_HEMIfloat2 lmh : TEXCOORD5; // lm-hemi#endif#endif#endif};//////////////////////////////////////////////////////////////////////////////////////////struct p_flat {float4 hpos : POSITION;#if defined(USE_R2_STATIC_SUN) && !defined(USE_LM_HEMI)float4 tcdh : TEXCOORD0; // Texture coordinates, w=sun_occlusion#elsefloat2 tcdh : TEXCOORD0; // Texture coordinates#endiffloat4 position : TEXCOORD1; // position + hemihalf3 N : TEXCOORD2; // Eye-space normal (for lighting)#ifdef USE_TDETAILfloat2 tcdbump : TEXCOORD3; // d-bump#ifdef USE_LM_HEMIfloat2 lmh : TEXCOORD4; // lm-hemi#endif#else#ifdef USE_LM_HEMIfloat2 lmh : TEXCOORD3; // lm-hemi#endif#endif};//////////////////////////////////////////////////////////////////////////////////////////struct f_deffer {half4 position : COLOR0; // px,py,pz, m-idhalf4 Ne : COLOR1; // nx,ny,nz, hemihalf4 C : COLOR2; // r, g, b, gloss};//////////////////////////////////////////////////////////////////////////////////////////struct p_screen {float4 hpos : POSITION;float2 tc0 : TEXCOORD0; // Texture coordinates (for sampling maps)};//////////////////////////////////////////////////////////////////////////////////////////// Geometry phase / deferring //uniform sampler2D s_base; //uniform sampler2D s_bump; //uniform sampler2D s_bumpX; //uniform sampler2D s_detail; //uniform sampler2D s_bumpD; //uniform sampler2D s_hemi; //uniform sampler2D s_mask; //uniform sampler2D s_dt_r; //uniform sampler2D s_dt_g; //uniform sampler2D s_dt_b; //uniform sampler2D s_dt_a; //uniform sampler2D s_dn_r; //uniform sampler2D s_dn_g; //uniform sampler2D s_dn_b; //uniform sampler2D s_dn_a; ////////////////////////////////////////////////////////////////////////////////////////////// Lighting/shadowing phase //uniform sampler2D s_depth; //uniform sampler2D s_position; //uniform sampler2D s_normal; //uniform sampler s_lmap; // 2D/cube projector lightmapuniform sampler3D s_material; //uniform sampler1D s_attenuate; ////////////////////////////////////////////////////////////////////////////////////////////// Combine phase //uniform sampler2D s_diffuse; // rgb.a = diffuse.glossuniform sampler2D s_accumulator; // rgb.a = diffuse.specularuniform sampler2D s_generic; //uniform sampler2D s_bloom; //uniform sampler s_image; // used in various post-processinguniform sampler2D s_tonemap; // actually MidleGray / exp(Lw + eps)//////////////////////////////////////////////////////////////////////////////////////////// Defines //#define def_gloss half(8.f /255.f)#define def_aref half(128.f/255.f)#define def_dbumph half(0.333f)#define def_virtualh half(.05f) // 5cm#define def_distort half(0.05f) // we get -0.5 .. 0.5 range, this is -512 .. 512 for 1024, so scale it#define def_hdr half(20.h) //(8.h) // hight luminance range half(3.h)#define def_hdr_clip half(0.75h) //#define def_lum_hrange half(1.55h) // hight luminance range (было 0.55h)// Defines ////#define def_gloss half(2.f /255.f)//#define def_aref half(200.f/255.f)//#define def_dbumph half(0.333f)//#define def_virtualh half(.05f) // 5cm//#define def_distort half(0.05f) // we get -0.5 .. 0.5 range, this is -512 .. 512 for 1024, so scale it//#define def_hdr half(8.h) // hight luminance range half(3.h)//#define def_hdr_clip half(0.75h) ////////////////////////////////////////////////////////////////////////////////////////////#define LUMINANCE_VECTOR half3(0.3f, 0.48f, 0.22f)void tonemap (out half4 low, out half4 high, half3 rgb, half scale){rgb = rgb*scale;const float fWhiteIntensity = 1.7;const float fWhiteIntensitySQR = fWhiteIntensity*fWhiteIntensity;#ifdef USE_GAMMA_22low = half4(sqrt(rgb.xyz), 0);#else// low = half4(rgb,0);low = half4( ( (rgb*(1+rgb/fWhiteIntensitySQR)) / (rgb+1) ),0 ); //macron shoc new#endif#ifdef USE_R2_STATIC_SUNhigh = low/def_hdr; // 8x dynamic range//high = half4 (rgb, dot(rgb,0.333f)-def_hdr_clip)high = half4 (rgb/def_hdr, 0 ) ;// 8x dynamic range#elsehigh = half4(rgb-def_lum_hrange, dot( min(rgb,def_lum_hrange), LUMINANCE_VECTOR ) );#endif/*rgb = rgb*scale;low = rgb.xyzz;high = low/def_hdr; // 8x dynamic range*/}half4 combine_bloom (half3 low, half3 high) {return half4(low+high,1.h);}float3 v_hemi (float3 n) { return L_hemi_color*(.5f + .5f*n.y); }float3 v_hemi_wrap (float3 n, float w) { return L_hemi_color*(w + (1-w)*n.y); }float3 v_sun (float3 n) { return L_sun_color*dot(n,-L_sun_dir_w); }float3 v_sun_wrap (float3 n, float w) { return L_sun_color*(w+(1-w)*dot(n,-L_sun_dir_w)); }half3 p_hemi (float2 tc) {half3 t_lmh = tex2D (s_hemi, tc);return dot (t_lmh,1.h/3.h);}#define FXPS technique _render{pass _code{PixelShader=compile ps_3_0 main();}}#define FXVS technique _render{pass _code{VertexShader=compile vs_3_0 main();}}#endif Изменено 4 Мая 2015 пользователем warwer 1 Поделиться этим сообщением Ссылка на сообщение