Unity Camera Patch

He estado luchando para que la muestra de parches de la cámara funcione en unidad.

Finalmente conseguí hacer que funcione en el editor, pero para la vida de mí no puede hacer que funcione en mi samsung galaxy s3 (android).

La única diferencia que puedo ver es cameraTextureRatio que es 1,0 1,0 en el editor de la textura y el tamaño de la imagen es idéntico. En mi teléfono es:

_CAMERATEXTURE_RATIO_X:0.625 _CAMERATEXTURE_RATIO_Y:0.9375 

Con resoluciones de:

 VideoTextureInfo 1024 512 640 480 

Lo estoy calculando así:

 cameraTextureRatio.x = (float)texInfo.imageSize.x / (float)texInfo.textureSize.x ; cameraTextureRatio.y = (float)texInfo.imageSize.y / (float)texInfo.textureSize.y ; 

Mi sombreador es:

 Shader "Custom/VidTexPatch" { Properties { _MainTex("Texture", 2D) = "white" { } } SubShader{ Pass{ Cull Back CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; float4x4 _MATRIX_MVP; float _CAMERATEXTURE_RATIO_X ; float _CAMERATEXTURE_RATIO_Y ; struct v2f{ float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; v2f vert(appdata_base v){ v2f o; float2 targetSize = float2(15,15); float2 cameraTextureRatio = float2 (_CAMERATEXTURE_RATIO_X, _CAMERATEXTURE_RATIO_Y); float4 targetPoint = float4(targetSize.x * (v.texcoord.x - 0.5), targetSize.y * (v.texcoord.y - 0.5), 0.0, 1.0); float4 clipCoords = mul(_MATRIX_MVP, targetPoint); float3 normalizedDeviceCoords = clipCoords.xyz / clipCoords.w; float2 cameraTexCoords = float2((normalizedDeviceCoords.x + 1.0) / 2.0, ((normalizedDeviceCoords.y * -1.0) + 1.0) / 2.0); float2 finalCoords = float2(cameraTexCoords.x * cameraTextureRatio.x, cameraTexCoords.y * cameraTextureRatio.y); // float2 finalCoords = float2(cameraTexCoords.x * cameraTextureRatio.y, cameraTexCoords.y * cameraTextureRatio.y); o.uv = finalCoords; //o.uv=cameraTexCoords; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); return o; } half4 frag(v2f i) : COLOR{ half4 texcol = tex2D(_MainTex, i.uv); return texcol; } ENDCG } }} 

El tamaño del búfer es diferente al tamaño de la textura. Busqué y encontré que está relacionado con el poder de dos restricciones de hardware.

Cuando se ejecuta el parche capturado se muestra en frente de la cámara. Cuando intenté en mi moto g (androide) la resolución es 1280 * 720 (16: 9) el búfer es de 2048 * 1024. Y la cartografía es algo lo correcto.

La relación 1280/2048 = 0,62 y 720/1024 = 0,70 es algo más cercana con respecto a cuando la resolución es 4: 3:

640 * 480 (4: 3) el tampón es de tamaño 1024 * 512 y la relación 640/1024 = 0,62 y 480/512 = 0,93. Debe haber un escalamiento en la dirección x que pueda observar al ver el plano (RenderTargetView) en su dispositivo. He intentado cambiar el tamaño de la textura, pero la unidad no lo permitirá.

He hecho un proyecto de unidad limpio aquí: https://www.dropbox.com/s/e3nfs62fdm9ajsi/cameraPatch.unitypackage

El marcador utilizado está en Textures / ar.png

Estoy al borde de renunciar, creo que he intentado todo lo que hay por ahora ..: / ¿Alguien tiene una idea de cómo resolver este problema? Estaría eternamente agradecido si alguien pudiera echar un vistazo y quizás detectar un error. Gracias

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.