tricsi Posted December 3, 2015 Share Posted December 3, 2015 (edited) . Edited April 10, 2018 by tricsi @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted December 3, 2015 Author Share Posted December 3, 2015 (edited) del Edited January 12, 2016 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
tricsi Posted December 3, 2015 Share Posted December 3, 2015 (edited) . Edited April 10, 2018 by tricsi @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted December 3, 2015 Author Share Posted December 3, 2015 (edited) del Edited January 12, 2016 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
tricsi Posted December 3, 2015 Share Posted December 3, 2015 (edited) . Edited April 10, 2018 by tricsi @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted December 4, 2015 Author Share Posted December 4, 2015 (edited) del Edited January 12, 2016 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
tricsi Posted December 4, 2015 Share Posted December 4, 2015 (edited) . Edited April 10, 2018 by tricsi @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted December 4, 2015 Author Share Posted December 4, 2015 (edited) del Edited January 12, 2016 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
AcuteNC Posted December 4, 2015 Share Posted December 4, 2015 , по скриншотам смотрю, что используется Blender Render. C Cycles Renderом будет работать? @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted December 4, 2015 Author Share 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 Link to comment Short link Share on other sites More sharing options...
AcuteNC Posted December 4, 2015 Share 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 Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted December 4, 2015 Author Share Posted December 4, 2015 Развертка модели делается аддоном?Развертка хранится в primitives и мой аддон её отлично загружает. А то пиды нормально пишутся только на сиЧто-то на питоне алгоритм был быстрее))) Я не смог в C++ оптимизацию( @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted December 4, 2015 Share Posted December 4, 2015 Что-то на питоне алгоритм был быстрее))) Я не смог в C++ оптимизацию( Да быть не может. И не надо там ни какой оптимизации. Может ты на вызове или передаче данных время теряешь? @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted December 4, 2015 Author Share Posted December 4, 2015 (edited) v41. Добавил вкладку Hangars. Edited March 16, 2018 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
Pilot_25 Posted December 4, 2015 Share Posted December 4, 2015 (edited) кто-нибудь блендер даст, похоже в нём проблема, без копирования папки тож вылетает (File->User Preferences...)-нажимаю и прога закрывается Edited December 4, 2015 by Pilot_25 @ Quote Link to comment Short link Share on other sites More sharing options...
tricsi Posted December 4, 2015 Share Posted December 4, 2015 (edited) . Edited April 10, 2018 by tricsi @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted December 4, 2015 Author Share Posted December 4, 2015 tricsi запуталсо @ Quote Link to comment Short link Share on other sites More sharing options...
tricsi Posted December 4, 2015 Share Posted December 4, 2015 (edited) . Edited April 10, 2018 by tricsi @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted December 4, 2015 Author Share Posted December 4, 2015 (edited) . Edited March 16, 2018 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
tricsi Posted December 4, 2015 Share Posted December 4, 2015 (edited) . Edited April 10, 2018 by tricsi @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.