tricsi 1,144 #302661 Posted December 3, 2015 (edited) . Edited April 10, 2018 by tricsi Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #302662 Posted December 3, 2015 (edited) del Edited January 12, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
tricsi 1,144 #302703 Posted December 3, 2015 (edited) . Edited April 10, 2018 by tricsi Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #302705 Posted December 3, 2015 (edited) del Edited January 12, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
tricsi 1,144 #302706 Posted December 3, 2015 (edited) . Edited April 10, 2018 by tricsi Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #302717 Posted December 4, 2015 (edited) del Edited January 12, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
tricsi 1,144 #302722 Posted December 4, 2015 (edited) . Edited April 10, 2018 by tricsi Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #302765 Posted December 4, 2015 (edited) del Edited January 12, 2016 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
AcuteNC 32 #302797 Posted December 4, 2015 , по скриншотам смотрю, что используется Blender Render. C Cycles Renderом будет работать? Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #302798 Posted December 4, 2015 (edited) C Cycles Renderом будет работать?Для Суслика материалы я еще не настраивал.Вы можете помочь нам и создать blend-файл с настроенными нодами для каких-нибудь танков. Вот информация по текстурам: http://www.koreanrandom.com/forum/topic/28240-blender-tank-viewer/?p=301948 Вот фрагментный шейдер rextimmy из wtv 1.0.17 pbs.frag #version 150 core uniform sampler2D diffuseMap0; uniform sampler2D normalMap; uniform sampler2D glossMap; uniform sampler2D detailMap; uniform sampler2D exclusionMap; uniform sampler2D camoMap; uniform sampler2D shadowMap; #ifdef DUAL_TEXTURE uniform sampler2D diffuseMap1; in vec2 TexCoord1; #endif uniform int camoEnabled; uniform int dxt1NormalMap; uniform int detailMetallic; uniform float detailPower; uniform vec4 detailTile; uniform vec3 lightAmbient; uniform vec3 lightDiffuse; uniform vec4 camoTiling; uniform vec4 camoColor0; uniform vec4 camoColor1; uniform vec4 camoColor2; uniform vec4 camoColor3; uniform int shadowEnabled; uniform float shadowDivide; uniform float shadowSamples; uniform float alphaRef; in vec2 TexCoord0; in vec3 Normal; in vec3 LightDir; in vec3 EyeDir; in vec4 ShadowCoord; in vec3 LightDirTangent; in vec3 EyeDirTangent; const float PI = 3.14159265358; const float PI_OVER_FOUR = 0.785398163395; const float PI_OVER_TWO = 1.570796; out vec4 oFragColor; //TODO - fix shadow code, it's a mess and VERY inefficient,too much branching etc vec2 poissonDisk[16] = vec2[]( vec2( -0.94201624, -0.39906216 ), vec2( 0.94558609, -0.76890725 ), vec2( -0.094184101, -0.92938870 ), vec2( 0.34495938, 0.29387760 ), vec2( -0.91588581, 0.45771432 ), vec2( -0.81544232, -0.87912464 ), vec2( -0.38277543, 0.27676845 ), vec2( 0.97484398, 0.75648379 ), vec2( 0.44323325, -0.97511554 ), vec2( 0.53742981, -0.47373420 ), vec2( -0.26496911, -0.41893023 ), vec2( 0.79197514, 0.19090188 ), vec2( -0.24188840, 0.99706507 ), vec2( -0.81409955, 0.91437590 ), vec2( 0.19984126, 0.78641367 ), vec2( 0.14383161, -0.14100790 ) ); float lookup(in float samples,in int index,in float depthCheck) { vec2 disk = poissonDisk[index]/90.0f; vec2 coord = ShadowCoord.xy; coord.xy += disk; float shadow = 0.0; if ( texture( shadowMap, (coord/ShadowCoord.w) ).r < depthCheck ) shadow = (1.0/samples *0.29); return shadow; } float tap4(in float depthCheck) { float shadow=1.0; shadow -= lookup(4.0,0,depthCheck); shadow -= lookup(4.0,1,depthCheck); shadow -= lookup(4.0,2,depthCheck); shadow -= lookup(4.0,3,depthCheck); return shadow; } float tap8(in float depthCheck) { float shadow=1.0; shadow -= lookup(8.0,0,depthCheck); shadow -= lookup(8.0,1,depthCheck); shadow -= lookup(8.0,2,depthCheck); shadow -= lookup(8.0,3,depthCheck); shadow -= lookup(8.0,4,depthCheck); shadow -= lookup(8.0,5,depthCheck); shadow -= lookup(8.0,6,depthCheck); shadow -= lookup(8.0,7,depthCheck); return shadow; } float tap16(in float depthCheck) { float shadow=1.0; shadow -= lookup(16.0,0,depthCheck); shadow -= lookup(16.0,1,depthCheck); shadow -= lookup(16.0,2,depthCheck); shadow -= lookup(16.0,3,depthCheck); shadow -= lookup(16.0,4,depthCheck); shadow -= lookup(16.0,5,depthCheck); shadow -= lookup(16.0,6,depthCheck); shadow -= lookup(16.0,7,depthCheck); shadow -= lookup(16.0,8,depthCheck); shadow -= lookup(16.0,9,depthCheck); shadow -= lookup(16.0,10,depthCheck); shadow -= lookup(16.0,11,depthCheck); shadow -= lookup(16.0,12,depthCheck); shadow -= lookup(16.0,13,depthCheck); shadow -= lookup(16.0,14,depthCheck); shadow -= lookup(16.0,15,depthCheck); return shadow; } float calcShadow() { float shadow = 1.0; if(shadowEnabled ==1) { if (ShadowCoord.w > 0.0) { vec3 n = normalize( Normal ); vec3 l = normalize( LightDir ); float cosTheta = clamp( dot( n,l ), 0.0,1.0 ); float bias = 0.005*tan(acos(cosTheta)); bias = clamp(bias,0.0,0.0019); int samples =int(shadowSamples); float depthCheck = (ShadowCoord.z-bias)/ShadowCoord.w; if(samples == 4) shadow = tap4(depthCheck); else if(samples == 8) shadow = tap8(depthCheck); else if(samples == 16) shadow = tap16(depthCheck); } } return shadow; } float saturate(float a) { return min(1.0,max(0.0,a)); } vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); } void main(void) { vec4 albedo = texture(diffuseMap0,TexCoord0); vec3 normalBump; float alphaCheck=albedo.a; if(dxt1NormalMap==1) { normalBump = (texture(normalMap, TexCoord0).rgb * 2.0) - 1.0; } else { vec4 normal = texture(normalMap, TexCoord0); normalBump.xy = normal.ag * 2.0 - 1.0; normalBump.z = sqrt(1.0 - dot(normalBump.xy, normalBump.xy)); //sneaky alpha hiding in red channel of normal map alphaCheck = normal.r; } if(alphaCheck < alphaRef) { discard; } #ifdef DUAL_TEXTURE albedo *= texture(diffuseMap1,TexCoord1); #endif vec2 gloss = texture(glossMap,TexCoord0).rg; //if(detailMetallic) //{ // vec2 newCoord = TexCoord0; // newCoord *= detailTile.xy; // vec4 detail = texture(detailMap, newCoord); // albedo =mix(albedo,detail,detailPower); //} if(camoEnabled==1) { vec4 exclusion = texture( exclusionMap, TexCoord0); vec2 newCoord = TexCoord0;//can't modify TexCoord0 newCoord *= camoTiling.xy; newCoord += camoTiling.zw; vec4 alpha = texture( camoMap, newCoord); vec4 result= mix(albedo,camoColor0,alpha.r*camoColor0.a); result = mix(result,camoColor1,alpha.g*camoColor1.a); result = mix(result,camoColor2,alpha.b*camoColor2.a); result = mix(result,camoColor3,alpha.a*camoColor3.a); albedo = mix(albedo,result,exclusion.x); } normalBump = normalize(normalBump); vec3 eye = normalize(EyeDirTangent); vec3 n = normalBump; vec3 ldir = normalize(LightDirTangent); vec3 h = normalize(ldir + eye); float NdotL = saturate( dot( n, ldir )); float NdotH = saturate( dot( n, h )); float HdotL = dot(h,ldir); float NdotV = saturate( dot(n,eye)); float HdotV = saturate( dot(h,eye)); float specular_power = gloss.r*65; float specular_colour = gloss.g; float normalisation_term = ( specular_power + 2.0 ) / 8.0; float blinn_phong = pow( NdotH, specular_power ); float specular_term = normalisation_term * blinn_phong; float cosThetha = NdotL; float base = 1.0f -HdotL; float exponential = pow( base, 5.0f ); float fresnel_term = specular_colour + ( 1.0 - specular_colour ) * exponential; float alpha = 1.0f / ( sqrt( PI_OVER_FOUR * specular_power + PI_OVER_TWO ) ); float visibility_term = ( NdotL * ( 1.0 - alpha ) + alpha ) * ( NdotV * ( 1.0f - alpha ) + alpha ); visibility_term = 1.0f / visibility_term; float shadow = calcShadow(); vec3 specular = vec3(0); if(shadow >0.8) specular = gloss.g*specular_term * cosThetha * fresnel_term * visibility_term * lightDiffuse; vec3 diffuse = lightDiffuse * NdotL + lightAmbient; oFragColor.rgb = diffuse*shadow * albedo.rgb + specular; oFragColor.a = 1.0; } Edited December 4, 2015 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
AcuteNC 32 #302806 Posted December 4, 2015 (edited) Для Суслика материалы я еще не настраивал. Вы можете помочь нам и создать blend-файл с настроенными нодами для каких-нибудь танков. Вот информация по текстурам: http://www.koreanrandom.com/forum/topic/28240-blender-tank-viewer/?p=301948 Развертка модели делается аддоном? ---- Апдэйт Я видел эти коменты :) Если меня наконец-то пустят дома к компу и я не усну раньше, то попробую. Edited December 4, 2015 by AcuteNC Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #302807 Posted December 4, 2015 Развертка модели делается аддоном?Развертка хранится в primitives и мой аддон её отлично загружает. А то пиды нормально пишутся только на сиЧто-то на питоне алгоритм был быстрее))) Я не смог в C++ оптимизацию( Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #302827 Posted December 4, 2015 Что-то на питоне алгоритм был быстрее))) Я не смог в C++ оптимизацию( Да быть не может. И не надо там ни какой оптимизации. Может ты на вызове или передаче данных время теряешь? Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #302833 Posted December 4, 2015 (edited) v41. Добавил вкладку Hangars. Edited March 16, 2018 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Pilot_25 454 #302847 Posted December 4, 2015 (edited) кто-нибудь блендер даст, похоже в нём проблема, без копирования папки тож вылетает (File->User Preferences...)-нажимаю и прога закрывается Edited December 4, 2015 by Pilot_25 Quote Share this post Link to post Short link Share on other sites
tricsi 1,144 #302864 Posted December 4, 2015 (edited) . Edited April 10, 2018 by tricsi Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #302869 Posted December 4, 2015 tricsi запуталсо Quote Share this post Link to post Short link Share on other sites
tricsi 1,144 #302882 Posted December 4, 2015 (edited) . Edited April 10, 2018 by tricsi Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #302884 Posted December 4, 2015 (edited) . Edited March 16, 2018 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
tricsi 1,144 #302901 Posted December 4, 2015 (edited) . Edited April 10, 2018 by tricsi Quote Share this post Link to post Short link Share on other sites